From 21697992462361267ac90fbfee4d5f2ad812feff Mon Sep 17 00:00:00 2001 From: jimmy-sketch Date: Sat, 1 Nov 2025 13:51:42 +0800 Subject: [PATCH 01/27] =?UTF-8?q?fix:=20=E7=A7=BB=E9=99=A4=E5=86=97?= =?UTF-8?q?=E4=BD=99=E7=9A=84=E8=AF=AD=E8=A8=80=E6=96=87=E4=BB=B6=E5=9B=9E?= =?UTF-8?q?=E9=80=80=E6=9C=BA=E5=88=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/tools/language_manager.py | 5 ----- 1 file changed, 5 deletions(-) diff --git a/app/tools/language_manager.py b/app/tools/language_manager.py index b4a40503..5239614c 100644 --- a/app/tools/language_manager.py +++ b/app/tools/language_manager.py @@ -30,11 +30,6 @@ def __init__(self): self._loaded_languages: Dict[str, Dict[str, Any]] = { "ZH_CN": merged_zh_cn } - else: - self._loaded_languages: Dict[str, Dict[str, Any]] = { - "ZH_CN": ZH_CN - } - # 加载resources/Language文件夹下的所有语言文件 self._load_all_languages() From 117348e679a492b7eb25e734720e017c34c1ac92 Mon Sep 17 00:00:00 2001 From: jimmy-sketch Date: Sat, 1 Nov 2025 17:49:24 +0800 Subject: [PATCH 02/27] =?UTF-8?q?refactor:=20=E5=AE=8C=E6=88=90=E5=AF=B9?= =?UTF-8?q?=E2=80=9C=E5=9F=BA=E7=A1=80=E8=AE=BE=E7=BD=AE=E2=80=9D=E7=95=8C?= =?UTF-8?q?=E9=9D=A2=E6=96=87=E6=9C=AC=E7=9A=84=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/Language/modules/basic_settings.py | 46 ++-- app/view/settings/basic_settings.py | 286 ++++++++++++++++++------- 2 files changed, 237 insertions(+), 95 deletions(-) diff --git a/app/Language/modules/basic_settings.py b/app/Language/modules/basic_settings.py index 983a6bb5..5a8999e5 100644 --- a/app/Language/modules/basic_settings.py +++ b/app/Language/modules/basic_settings.py @@ -7,56 +7,56 @@ "personalised": {"name": "个性化", "description": "软件个性化设置"}, "autostart": { "name": "开机自启", - "description": "设置软件是否在开机时自动启动", - "switchbutton_name": {"enable": "开启", "disable": "关闭"}, + "description": "在系统启动时自动开启本应用", + "switchbutton_name": {"enable": "", "disable": ""}, }, "check_update": { - "name": "检查更新", - "description": "设置是否在启动时检查软件更新", - "switchbutton_name": {"enable": "启用", "disable": "禁用"}, + "name": "自动检查更新", + "description": "启动本应用时自动检查更新", + "switchbutton_name": {"enable": "", "disable": ""}, }, "show_startup_window": { - "name": "显示启动窗口", - "description": "设置是否在启动时显示启动窗口", - "switchbutton_name": {"enable": "显示", "disable": "不显示"}, + "name": "启动窗口", + "description": "软件启动时显示启动窗口", + "switchbutton_name": {"enable": "", "disable": ""}, }, "export_diagnostic_data": { "name": "导出诊断数据", - "description": "设置是否在退出时导出诊断数据", - "pushbutton_name": "导出诊断数据", + "description": "导出诊断数据", + "pushbutton_name": "导出", }, "export_settings": { "name": "导出设置", - "description": "设置是否在退出时导出设置", - "pushbutton_name": "导出设置", + "description": "导出设置到文件", + "pushbutton_name": "导出", }, "import_settings": { "name": "导入设置", - "description": "设置是否在启动时导入设置", - "pushbutton_name": "导入设置", + "description": "从文件导入设置", + "pushbutton_name": "选择文件", }, "export_all_data": { "name": "导出所有数据", - "description": "设置是否在退出时导出所有数据", - "pushbutton_name": "导出所有数据", + "description": "导出所有数据", + "pushbutton_name": "导出", }, "import_all_data": { "name": "导入所有数据", - "description": "设置是否在启动时导入所有数据", - "pushbutton_name": "导入所有数据", + "description": "导入所有数据", + "pushbutton_name": "选择文件夹", }, "dpiScale": { "name": "DPI缩放", - "description": "设置软件DPI缩放比例(重启生效)", + "description": "设置软件的缩放比例(重启生效)", "combo_items": ["100%", "125%", "150%", "175%", "200%", "Auto"], }, - "font": {"name": "字体", "description": "设置软件字体(重启生效)"}, + "font": {"name": "字体", "description": "设置软件内使用的字体(重启生效)"}, "theme": { "name": "主题", - "description": "设置软件主题", + "description": "设置软件的颜色主题", "combo_items": ["浅色", "深色", "跟随系统设置"], }, - "theme_color": {"name": "主题色", "description": "软件主题色"}, + "theme_color": {"name": "强调色", "description": "软件的强调色,即按钮等位置的背景颜色"}, "language": {"name": "语言", "description": "设置软件语言(重启生效)"}, } -} +} \ No newline at end of file diff --git a/app/view/settings/basic_settings.py b/app/view/settings/basic_settings.py index 98c7f961..7c3d1a6b 100644 --- a/app/view/settings/basic_settings.py +++ b/app/view/settings/basic_settings.py @@ -1,24 +1,31 @@ # ================================================== # 导入库 # ================================================== -import json -import os -import sys -import subprocess - -from loguru import logger -from PyQt6.QtWidgets import * -from PyQt6.QtGui import * -from PyQt6.QtCore import * -from PyQt6.QtNetwork import * -from qfluentwidgets import * - -from app.tools.variable import * -from app.tools.path_utils import * -from app.tools.personalised import * -from app.tools.settings_default import * -from app.tools.settings_access import * -from app.Language.obtain_language import * +from PyQt6.QtWidgets import QWidget, QVBoxLayout +from PyQt6.QtGui import QFontDatabase +from qfluentwidgets import ( + GroupHeaderCardWidget, + SwitchButton, + ComboBox, + ColorConfigItem, + ColorSettingCard, + PushButton, + Theme, + setTheme, + setThemeColor +) + +from app.tools.settings_access import readme_settings_async, update_settings +from app.tools.personalised import get_theme_icon +from app.Language.obtain_language import ( + get_content_name_async, + get_content_description_async, + get_content_combo_name_async, + get_content_pushbutton_name_async, + get_content_switchbutton_name_async, + get_all_languages_name +) + # ================================================== # 基本设置 @@ -43,6 +50,7 @@ def __init__(self, parent=None): self.data_management_widget = basic_settings_data_management(self) self.vBoxLayout.addWidget(self.data_management_widget) + class basic_settings_function(GroupHeaderCardWidget): def __init__(self, parent=None): super().__init__(parent) @@ -51,32 +59,87 @@ def __init__(self, parent=None): # 开机自启设置 self.autostart_switch = SwitchButton() - self.autostart_switch.setOffText(get_content_switchbutton_name_async("basic_settings", "autostart", "disable")) - self.autostart_switch.setOnText(get_content_switchbutton_name_async("basic_settings", "autostart", "enable")) - self.autostart_switch.setChecked(readme_settings_async("basic_settings", "autostart")) - self.autostart_switch.checkedChanged.connect(lambda: update_settings("basic_settings", "autostart", self.autostart_switch.isChecked())) + self.autostart_switch.setOffText( + get_content_switchbutton_name_async( + "basic_settings", "autostart", "disable" + ) + ) + self.autostart_switch.setOnText( + get_content_switchbutton_name_async("basic_settings", "autostart", "enable") + ) + self.autostart_switch.setChecked( + readme_settings_async("basic_settings", "autostart") + ) + self.autostart_switch.checkedChanged.connect( + lambda: update_settings( + "basic_settings", "autostart", self.autostart_switch.isChecked() + ) + ) # 自动检查更新设置 self.check_update_switch = SwitchButton() - self.check_update_switch.setOffText(get_content_switchbutton_name_async("basic_settings", "check_update", "disable")) - self.check_update_switch.setOnText(get_content_switchbutton_name_async("basic_settings", "check_update", "enable")) - self.check_update_switch.setChecked(readme_settings_async("basic_settings", "check_update")) - self.check_update_switch.checkedChanged.connect(lambda: update_settings("basic_settings", "check_update", self.check_update_switch.isChecked())) + self.check_update_switch.setOffText( + get_content_switchbutton_name_async( + "basic_settings", "check_update", "disable" + ) + ) + self.check_update_switch.setOnText( + get_content_switchbutton_name_async( + "basic_settings", "check_update", "enable" + ) + ) + self.check_update_switch.setChecked( + readme_settings_async("basic_settings", "check_update") + ) + self.check_update_switch.checkedChanged.connect( + lambda: update_settings( + "basic_settings", "check_update", self.check_update_switch.isChecked() + ) + ) # 显示启动窗口设置 self.show_startup_window_switch = SwitchButton() - self.show_startup_window_switch.setOffText(get_content_switchbutton_name_async("basic_settings", "show_startup_window", "disable")) - self.show_startup_window_switch.setOnText(get_content_switchbutton_name_async("basic_settings", "show_startup_window", "enable")) - self.show_startup_window_switch.setChecked(readme_settings_async("basic_settings", "show_startup_window")) - self.show_startup_window_switch.checkedChanged.connect(lambda: update_settings("basic_settings", "show_startup_window", self.show_startup_window_switch.isChecked())) + self.show_startup_window_switch.setOffText( + get_content_switchbutton_name_async( + "basic_settings", "show_startup_window", "disable" + ) + ) + self.show_startup_window_switch.setOnText( + get_content_switchbutton_name_async( + "basic_settings", "show_startup_window", "enable" + ) + ) + self.show_startup_window_switch.setChecked( + readme_settings_async("basic_settings", "show_startup_window") + ) + self.show_startup_window_switch.checkedChanged.connect( + lambda: update_settings( + "basic_settings", + "show_startup_window", + self.show_startup_window_switch.isChecked(), + ) + ) # 添加设置项到分组 - self.addGroup(get_theme_icon("ic_fluent_arrow_sync_20_filled"), - get_content_name_async("basic_settings", "autostart"), get_content_description_async("basic_settings", "autostart"), self.autostart_switch) - self.addGroup(get_theme_icon("ic_fluent_cloud_sync_20_filled"), - get_content_name_async("basic_settings", "check_update"), get_content_description_async("basic_settings", "check_update"), self.check_update_switch) - self.addGroup(get_theme_icon("ic_fluent_window_play_20_filled"), - get_content_name_async("basic_settings", "show_startup_window"), get_content_description_async("basic_settings", "show_startup_window"), self.show_startup_window_switch) + self.addGroup( + get_theme_icon("ic_fluent_arrow_sync_20_filled"), + get_content_name_async("basic_settings", "autostart"), + get_content_description_async("basic_settings", "autostart"), + self.autostart_switch, + ) + self.addGroup( + get_theme_icon("ic_fluent_cloud_sync_20_filled"), + get_content_name_async("basic_settings", "check_update"), + get_content_description_async("basic_settings", "check_update"), + self.check_update_switch, + ) + self.addGroup( + get_theme_icon("ic_fluent_window_play_20_filled"), + get_content_name_async("basic_settings", "show_startup_window"), + get_content_description_async("basic_settings", "show_startup_window"), + self.show_startup_window_switch, + ) + class basic_settings_personalised(GroupHeaderCardWidget): def __init__(self, parent=None): @@ -91,31 +154,59 @@ def __init__(self, parent=None): current_theme = readme_settings_async("basic_settings", "theme") self.theme.setCurrentIndex(theme_to_index.get(current_theme, 2)) index_to_theme = {0: Theme.LIGHT, 1: Theme.DARK, 2: Theme.AUTO} - self.theme.currentIndexChanged.connect(lambda index: update_settings("basic_settings", "theme", ["LIGHT", "DARK", "AUTO"][index])) - self.theme.currentIndexChanged.connect(lambda index: setTheme(index_to_theme.get(index))) + self.theme.currentIndexChanged.connect( + lambda index: update_settings( + "basic_settings", "theme", ["LIGHT", "DARK", "AUTO"][index] + ) + ) + self.theme.currentIndexChanged.connect( + lambda index: setTheme(index_to_theme.get(index)) + ) # 主题色设置卡片 - self.themeColor = ColorConfigItem("basic_settings", "theme_color", readme_settings_async("basic_settings", "theme_color")) - self.themeColor.valueChanged.connect(lambda color: update_settings("basic_settings", "theme_color", color.name())) + self.themeColor = ColorConfigItem( + "basic_settings", + "theme_color", + readme_settings_async("basic_settings", "theme_color"), + ) + self.themeColor.valueChanged.connect( + lambda color: update_settings("basic_settings", "theme_color", color.name()) + ) self.themeColor.valueChanged.connect(lambda color: setThemeColor(color)) # 语言设置卡片 self.language = ComboBox() self.language.addItems(get_all_languages_name()) - self.language.setCurrentText(readme_settings_async("basic_settings", "language")) - self.language.currentTextChanged.connect(lambda language: update_settings("basic_settings", "language", language)) + self.language.setCurrentText( + readme_settings_async("basic_settings", "language") + ) + self.language.currentTextChanged.connect( + lambda language: update_settings("basic_settings", "language", language) + ) # 字体设置卡片 self.fontComboBox = ComboBox() - self.fontComboBox.addItems(["HarmonyOS Sans SC"] + sorted(QFontDatabase.families())) - self.fontComboBox.setCurrentText(readme_settings_async("basic_settings", "font")) - self.fontComboBox.currentTextChanged.connect(lambda font: update_settings("basic_settings", "font", font)) + self.fontComboBox.addItems( + ["HarmonyOS Sans SC"] + sorted(QFontDatabase.families()) + ) + self.fontComboBox.setCurrentText( + readme_settings_async("basic_settings", "font") + ) + self.fontComboBox.currentTextChanged.connect( + lambda font: update_settings("basic_settings", "font", font) + ) # 界面缩放设置卡片 self.dpiScale = ComboBox() - self.dpiScale.addItems(get_content_combo_name_async("basic_settings", "dpiScale")) - self.dpiScale.setCurrentText(readme_settings_async("basic_settings", "dpiScale")) - self.dpiScale.currentTextChanged.connect(lambda scale: update_settings("basic_settings", "dpiScale", scale)) + self.dpiScale.addItems( + get_content_combo_name_async("basic_settings", "dpiScale") + ) + self.dpiScale.setCurrentText( + readme_settings_async("basic_settings", "dpiScale") + ) + self.dpiScale.currentTextChanged.connect( + lambda scale: update_settings("basic_settings", "dpiScale", scale) + ) # 主题色设置卡片 self.themeColorCard = ColorSettingCard( @@ -126,17 +217,34 @@ def __init__(self, parent=None): ) # 添加设置项到分组 - self.addGroup(get_theme_icon("ic_fluent_dark_theme_20_filled"), - get_content_name_async("basic_settings", "theme"), get_content_description_async("basic_settings", "theme"), self.theme) - self.addGroup(get_theme_icon("ic_fluent_local_language_20_filled"), - get_content_name_async("basic_settings", "language"), get_content_description_async("basic_settings", "language"), self.language) - self.addGroup(get_theme_icon("ic_fluent_text_font_20_filled"), - get_content_name_async("basic_settings", "font"), get_content_description_async("basic_settings", "font"), self.fontComboBox) - self.addGroup(get_theme_icon("ic_fluent_zoom_fit_20_filled"), - get_content_name_async("basic_settings", "dpiScale"), get_content_description_async("basic_settings", "dpiScale"), self.dpiScale) + self.addGroup( + get_theme_icon("ic_fluent_dark_theme_20_filled"), + get_content_name_async("basic_settings", "theme"), + get_content_description_async("basic_settings", "theme"), + self.theme, + ) + self.addGroup( + get_theme_icon("ic_fluent_local_language_20_filled"), + get_content_name_async("basic_settings", "language"), + get_content_description_async("basic_settings", "language"), + self.language, + ) + self.addGroup( + get_theme_icon("ic_fluent_text_font_20_filled"), + get_content_name_async("basic_settings", "font"), + get_content_description_async("basic_settings", "font"), + self.fontComboBox, + ) + self.addGroup( + get_theme_icon("ic_fluent_zoom_fit_20_filled"), + get_content_name_async("basic_settings", "dpiScale"), + get_content_description_async("basic_settings", "dpiScale"), + self.dpiScale, + ) # 添加卡片到布局 self.vBoxLayout.addWidget(self.themeColorCard) + class basic_settings_data_management(GroupHeaderCardWidget): def __init__(self, parent=None): super().__init__(parent) @@ -144,33 +252,67 @@ def __init__(self, parent=None): self.setBorderRadius(8) # 导出诊断数据按钮 - self.export_diagnostic_data_button = PushButton(get_content_pushbutton_name_async("basic_settings", "export_diagnostic_data")) - self.export_diagnostic_data_button.clicked.connect(lambda: self.export_diagnostic_data()) + self.export_diagnostic_data_button = PushButton( + get_content_pushbutton_name_async( + "basic_settings", "export_diagnostic_data" + ) + ) + self.export_diagnostic_data_button.clicked.connect( + lambda: self.export_diagnostic_data() + ) # 导出设置按钮 - self.export_settings_button = PushButton(get_content_pushbutton_name_async("basic_settings", "export_settings")) + self.export_settings_button = PushButton( + get_content_pushbutton_name_async("basic_settings", "export_settings") + ) self.export_settings_button.clicked.connect(lambda: self.export_settings()) # 导入设置按钮 - self.import_settings_button = PushButton(get_content_pushbutton_name_async("basic_settings", "import_settings")) + self.import_settings_button = PushButton( + get_content_pushbutton_name_async("basic_settings", "import_settings") + ) self.import_settings_button.clicked.connect(lambda: self.import_settings()) # 导出软件所有数据按钮 - self.export_all_data_button = PushButton(get_content_pushbutton_name_async("basic_settings", "export_all_data")) + self.export_all_data_button = PushButton( + get_content_pushbutton_name_async("basic_settings", "export_all_data") + ) self.export_all_data_button.clicked.connect(lambda: self.export_all_data()) # 导入软件所有数据按钮 - self.import_all_data_button = PushButton(get_content_pushbutton_name_async("basic_settings", "import_all_data")) + self.import_all_data_button = PushButton( + get_content_pushbutton_name_async("basic_settings", "import_all_data") + ) self.import_all_data_button.clicked.connect(lambda: self.import_all_data()) # 添加设置项到分组 - self.addGroup(get_theme_icon("ic_fluent_database_arrow_down_20_filled"), - get_content_name_async("basic_settings", "export_diagnostic_data"), get_content_description_async("basic_settings", "export_diagnostic_data"), self.export_diagnostic_data_button) - self.addGroup(get_theme_icon("ic_fluent_arrow_clockwise_dashes_settings_20_filled"), - get_content_name_async("basic_settings", "export_settings"), get_content_description_async("basic_settings", "export_settings"), self.export_settings_button) - self.addGroup(get_theme_icon("ic_fluent_arrow_clockwise_dashes_settings_20_filled"), - get_content_name_async("basic_settings", "import_settings"), get_content_description_async("basic_settings", "import_settings"), self.import_settings_button) - self.addGroup(get_theme_icon("ic_fluent_database_window_20_filled"), - get_content_name_async("basic_settings", "export_all_data"), get_content_description_async("basic_settings", "export_all_data"), self.export_all_data_button) - self.addGroup(get_theme_icon("ic_fluent_database_window_20_filled"), - get_content_name_async("basic_settings", "import_all_data"), get_content_description_async("basic_settings", "import_all_data"), self.import_all_data_button) \ No newline at end of file + self.addGroup( + get_theme_icon("ic_fluent_database_arrow_down_20_filled"), + get_content_name_async("basic_settings", "export_diagnostic_data"), + get_content_description_async("basic_settings", "export_diagnostic_data"), + self.export_diagnostic_data_button, + ) + self.addGroup( + get_theme_icon("ic_fluent_arrow_clockwise_dashes_settings_20_filled"), + get_content_name_async("basic_settings", "export_settings"), + get_content_description_async("basic_settings", "export_settings"), + self.export_settings_button, + ) + self.addGroup( + get_theme_icon("ic_fluent_arrow_clockwise_dashes_settings_20_filled"), + get_content_name_async("basic_settings", "import_settings"), + get_content_description_async("basic_settings", "import_settings"), + self.import_settings_button, + ) + self.addGroup( + get_theme_icon("ic_fluent_database_window_20_filled"), + get_content_name_async("basic_settings", "export_all_data"), + get_content_description_async("basic_settings", "export_all_data"), + self.export_all_data_button, + ) + self.addGroup( + get_theme_icon("ic_fluent_database_window_20_filled"), + get_content_name_async("basic_settings", "import_all_data"), + get_content_description_async("basic_settings", "import_all_data"), + self.import_all_data_button, + ) From e78e0a913b1c7c1ba4997884d51d8a762763d467 Mon Sep 17 00:00:00 2001 From: Macros Date: Sat, 1 Nov 2025 19:25:52 +0800 Subject: [PATCH 03/27] =?UTF-8?q?=E5=A4=8D=E5=88=B6zh=5FCN.json=E5=88=B0en?= =?UTF-8?q?=5FUS.json?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Macros --- app/resources/Language/en_US.json | 1705 +++++++++++++++++++++++++++++ 1 file changed, 1705 insertions(+) create mode 100644 app/resources/Language/en_US.json diff --git a/app/resources/Language/en_US.json b/app/resources/Language/en_US.json new file mode 100644 index 00000000..6fe2b3fd --- /dev/null +++ b/app/resources/Language/en_US.json @@ -0,0 +1,1705 @@ +{ + "translate_JSON_file": { + "name":"中文简体", + "entertainment": false, + "translated_personnel": "lzy98276" + }, + "home": { + "title": { + "name": "主页", + "description": "软件主页" + } + }, + "basic_settings": { + "title": { + "name": "基础设置", + "description": "软件基础设置" + }, + "basic_function": { + "name": "基础功能", + "description": "软件基础功能" + }, + "data_management": { + "name": "数据管理", + "description": "数据管理" + }, + "personalised": { + "name": "个性化", + "description": "软件个性化设置" + }, + "autostart": { + "name": "开机自启", + "description": "设置软件是否在开机时自动启动", + "switchbutton_name": { + "enable": "开启", + "disable": "关闭" + } + }, + "check_update": { + "name": "检查更新", + "description": "设置是否在启动时检查软件更新", + "switchbutton_name": { + "enable": "启用", + "disable": "禁用" + } + }, + "show_startup_window": { + "name": "显示启动窗口", + "description": "设置是否在启动时显示启动窗口", + "switchbutton_name": { + "enable": "显示", + "disable": "不显示" + } + }, + "export_diagnostic_data": { + "name": "导出诊断数据", + "description": "设置是否在退出时导出诊断数据", + "pushbutton_name": "导出诊断数据" + }, + "export_settings": { + "name": "导出设置", + "description": "设置是否在退出时导出设置", + "pushbutton_name": "导出设置" + }, + "import_settings": { + "name": "导入设置", + "description": "设置是否在启动时导入设置", + "pushbutton_name": "导入设置" + }, + "export_all_data": { + "name": "导出所有数据", + "description": "设置是否在退出时导出所有数据", + "pushbutton_name": "导出所有数据" + }, + "import_all_data": { + "name": "导入所有数据", + "description": "设置是否在启动时导入所有数据", + "pushbutton_name": "导入所有数据" + }, + "dpiScale": { + "name": "DPI缩放", + "description": "设置软件DPI缩放比例(重启生效)", + "combo_items": ["100%", "125%", "150%", "175%", "200%", "Auto"] + }, + "font": { + "name": "字体", + "description": "设置软件字体(重启生效)" + }, + "theme": { + "name": "主题", + "description": "设置软件主题", + "combo_items": ["浅色", "深色", "跟随系统设置"] + }, + "theme_color": { + "name": "主题色", + "description": "软件主题色" + }, + "language": { + "name": "语言", + "description": "设置软件语言(重启生效)" + } + }, + "list_management": { + "title": { + "name": "名单管理", + "description": "软件名单管理页面" + } + }, + "roll_call_list": { + "title": { + "name": "点名名单", + "description": "点名名单" + }, + "set_class_name": { + "name": "设置班级名称", + "description": "设置班级名称" + }, + "select_class_name": { + "name": "选择班级", + "description": "选择班级" + }, + "import_student_name": { + "name": "导入学生名单", + "description": "导入学生名单" + }, + "name_setting": { + "name": "设置姓名", + "description": "设置姓名" + }, + "gender_setting": { + "name": "设置性别", + "description": "设置性别" + }, + "group_setting": { + "name": "设置班级", + "description": "设置班级" + }, + "export_student_name": { + "name": "导出学生名单", + "description": "导出学生名单" + } + }, + "roll_call_table": { + "title": { + "name": "点名表格", + "description": "用于展示和管理点名名单的表格" + }, + "HeaderLabels": { + "name": [ + "存在", + "学号", + "姓名", + "性别", + "小组" + ], + "description": "点名表格的列标题" + } + }, + "custom_draw_list": { + "title": { + "name": "自定义抽签", + "description": "自定义抽签" + } + }, + "lottery_list": { + "title": { + "name": "抽奖名单", + "description": "抽奖名单" + }, + "set_pool_name": { + "name": "设置奖池名称", + "description": "设置奖池名称" + }, + "select_pool_name": { + "name": "选择奖池 ", + "description": "选择奖池" + }, + "import_prize_name": { + "name": "导入奖品名单", + "description": "导入奖品名单" + }, + "prize_setting": { + "name": "设置奖品", + "description": "设置奖品" + }, + "prize_weight_setting": { + "name": "设置权重", + "description": "设置权重" + }, + "export_prize_name": { + "name": "导出奖品名单", + "description": "导出奖品名单" + } + }, + "lottery_table": { + "title": { + "name": "抽奖表格", + "description": "用于展示和管理抽奖名单的表格" + }, + "HeaderLabels": { + "name": [ + "存在", + "序号", + "奖品", + "权重" + ], + "description": "抽奖表格的列标题" + } + }, + "extraction_settings": { + "title": { + "name": "抽取设置", + "description": "抽取设置" + } + }, + "roll_call_settings": { + "title": { + "name": "点名设置", + "description": "点名设置" + }, + "extraction_function": { + "name": "抽取功能", + "description": "点名抽取功能相关设置" + }, + "display_settings": { + "name": "显示设置", + "description": "点名结果显示相关设置" + }, + "basic_animation_settings": { + "name": "动画设置", + "description": "点名动画效果相关设置" + }, + "color_theme_settings": { + "name": "颜色主题设置", + "description": "点名结果显示的颜色主题相关设置" + }, + "student_image_settings": { + "name": "学生头像设置", + "description": "点名结果显示的学生头像相关设置" + }, + "music_settings": { + "name": "音乐设置", + "description": "点名音乐相关设置" + }, + "draw_mode": { + "name": "抽取模式", + "description": "设置点名抽取的模式", + "combo_items": [ + "重复抽取", + "不重复抽取", + "半重复抽取" + ] + }, + "clear_record": { + "name": "清除抽取记录方式", + "description": "设置清除点名抽取记录的方式", + "combo_items": [ + "重启后清除", + "直到全部抽取完" + ], + "combo_items_other": [ + "重启后清除", + "直到全部抽取完", + "无需清除" + ] + }, + "half_repeat": { + "name": "半重复抽取次数", + "description": "设置半重复抽取的次数" + }, + "clear_time": { + "name": "抽取后定时清除时间", + "description": "设置抽取后定时清除记录的时间(秒)" + }, + "draw_type": { + "name": "抽取方式", + "description": "设置点名抽取的方式", + "combo_items": [ + "随机抽取", + "公平抽取" + ] + }, + "font_size": { + "name": "字体大小", + "description": "设置点名结果显示的字体大小" + }, + "display_format": { + "name": "结果显示格式", + "description": "设置点名结果的显示格式", + "combo_items": [ + "学号+姓名", + "姓名", + "学号" + ] + }, + "show_random": { + "name": "显示随机组员格式", + "description": "设置随机组员的显示格式", + "combo_items": [ + "不显示", + "组名[换行]姓名", + "组名[短横杠]姓名" + ] + }, + "animation": { + "name": "动画模式", + "description": "设置点名抽取的动画效果", + "combo_items": [ + "手动停止动画", + "自动播放动画", + "直接显示结果" + ] + }, + "animation_interval": { + "name": "动画间隔", + "description": "设置点名动画的间隔时间(毫秒)" + }, + "autoplay_count": { + "name": "自动播放次数", + "description": "设置点名动画自动播放的次数" + }, + "animation_color_theme": { + "name": "动画颜色主题", + "description": "设置点名动画的颜色主题", + "combo_items": [ + "关闭", + "随机颜色", + "固定颜色" + ] + }, + "result_color_theme": { + "name": "结果颜色主题", + "description": "设置点名结果显示的颜色主题", + "combo_items": [ + "关闭", + "随机颜色", + "固定颜色" + ] + }, + "animation_fixed_color": { + "name": "动画固定颜色", + "description": "设置点名动画的固定颜色" + }, + "result_fixed_color": { + "name": "结果固定颜色", + "description": "设置点名结果显示的固定颜色" + }, + "student_image": { + "name": "显示学生图片", + "description": "设置是否显示学生图片", + "switchbutton_name": { + "enable": "显示", + "disable": "隐藏" + } + }, + "open_student_image_folder": { + "name": "学生图片文件夹", + "description": "管理学生图片文件,图片文件名需与学生姓名一致" + }, + "animation_music": { + "name": "动画音乐", + "description": "设置是否播放动画音乐", + "switchbutton_name": { + "enable": "播放", + "disable": "关闭" + } + }, + "result_music": { + "name": "结果音乐", + "description": "设置是否播放结果音乐", + "switchbutton_name": { + "enable": "播放", + "disable": "关闭" + } + }, + "open_animation_music_folder": { + "name": "打开动画音乐文件夹", + "description": "管理动画音乐文件并支持随机播放功能" + }, + "open_result_music_folder": { + "name": "打开结果音乐文件夹", + "description": "管理结果音乐文件并支持随机播放功能" + }, + "animation_music_volume": { + "name": "动画音乐音量", + "description": "设置动画音乐的音量" + }, + "result_music_volume": { + "name": "结果音乐音量", + "description": "设置结果音乐的音量" + }, + "animation_music_fade_in": { + "name": "动画音乐淡入时间", + "description": "设置动画音乐淡入的时间" + }, + "result_music_fade_in": { + "name": "结果音乐淡入时间", + "description": "设置结果音乐淡入的时间" + }, + "animation_music_fade_out": { + "name": "动画音乐淡出时间", + "description": "设置动画音乐淡出的时间" + }, + "result_music_fade_out": { + "name": "结果音乐淡出时间", + "description": "设置结果音乐淡出的时间" + } + }, + "quick_draw_settings": { + "title": { + "name": "闪抽设置", + "description": "闪抽设置" + }, + "extraction_function": { + "name": "抽取功能", + "description": "闪抽抽取功能相关设置" + }, + "display_settings": { + "name": "显示设置", + "description": "闪抽结果显示相关设置" + }, + "basic_animation_settings": { + "name": "动画设置", + "description": "闪抽动画效果相关设置" + }, + "color_theme_settings": { + "name": "颜色主题设置", + "description": "闪抽结果显示的颜色主题相关设置" + }, + "student_image_settings": { + "name": "学生头像设置", + "description": "闪抽结果显示的学生头像相关设置" + }, + "music_settings": { + "name": "音乐设置", + "description": "闪抽音乐相关设置" + }, + "draw_mode": { + "name": "抽取模式", + "description": "设置闪抽抽取的模式", + "combo_items": [ + "重复抽取", + "不重复抽取", + "半重复抽取" + ] + }, + "clear_record": { + "name": "清除抽取记录方式", + "description": "设置清除闪抽抽取记录的方式", + "combo_items": [ + "重启后清除", + "直到全部抽取完" + ], + "combo_items_other": [ + "重启后清除", + "直到全部抽取完", + "无需清除" + ] + }, + "half_repeat": { + "name": "半重复抽取次数", + "description": "设置半重复抽取的次数" + }, + "clear_time": { + "name": "抽取后定时清除时间", + "description": "设置抽取后定时清除记录的时间(秒)" + }, + "draw_type": { + "name": "抽取方式", + "description": "设置闪抽抽取的方式", + "combo_items": [ + "随机抽取", + "公平抽取" + ] + }, + "font_size": { + "name": "字体大小", + "description": "设置闪抽结果显示的字体大小" + }, + "display_format": { + "name": "结果显示格式", + "description": "设置闪抽结果的显示格式", + "combo_items": [ + "学号+姓名", + "姓名", + "学号" + ] + }, + "show_random": { + "name": "显示随机组员格式", + "description": "设置随机组员的显示格式", + "combo_items": [ + "不显示", + "组名[换行]姓名", + "组名[短横杠]姓名" + ] + }, + "animation": { + "name": "动画模式", + "description": "设置闪抽抽取的动画效果", + "combo_items": [ + "手动停止动画", + "自动播放动画", + "直接显示结果" + ] + }, + "animation_interval": { + "name": "动画间隔", + "description": "设置闪抽动画的间隔时间(毫秒)" + }, + "autoplay_count": { + "name": "自动播放次数", + "description": "设置闪抽动画自动播放的次数" + }, + "animation_color_theme": { + "name": "动画颜色主题", + "description": "设置闪抽动画的颜色主题", + "combo_items": [ + "关闭", + "随机颜色", + "固定颜色" + ] + }, + "result_color_theme": { + "name": "结果颜色主题", + "description": "设置闪抽结果显示的颜色主题", + "combo_items": [ + "关闭", + "随机颜色", + "固定颜色" + ] + }, + "animation_fixed_color": { + "name": "动画固定颜色", + "description": "设置闪抽动画的固定颜色" + }, + "result_fixed_color": { + "name": "结果固定颜色", + "description": "设置闪抽结果显示的固定颜色" + }, + "student_image": { + "name": "显示学生图片", + "description": "设置是否显示学生图片", + "switchbutton_name": { + "enable": "显示", + "disable": "隐藏" + } + }, + "open_student_image_folder": { + "name": "学生图片文件夹", + "description": "管理学生图片文件,图片文件名需与学生姓名一致" + }, + "animation_music": { + "name": "动画音乐", + "description": "设置是否播放动画音乐", + "switchbutton_name": { + "enable": "播放", + "disable": "关闭" + } + }, + "result_music": { + "name": "结果音乐", + "description": "设置是否播放结果音乐", + "switchbutton_name": { + "enable": "播放", + "disable": "关闭" + } + }, + "open_animation_music_folder": { + "name": "打开动画音乐文件夹", + "description": "管理动画音乐文件并支持随机播放功能" + }, + "open_result_music_folder": { + "name": "打开结果音乐文件夹", + "description": "管理结果音乐文件并支持随机播放功能" + }, + "animation_music_volume": { + "name": "动画音乐音量", + "description": "设置动画音乐的音量" + }, + "result_music_volume": { + "name": "结果音乐音量", + "description": "设置结果音乐的音量" + }, + "animation_music_fade_in": { + "name": "动画音乐淡入时间", + "description": "设置动画音乐淡入的时间" + }, + "result_music_fade_in": { + "name": "结果音乐淡入时间", + "description": "设置结果音乐淡入的时间" + }, + "animation_music_fade_out": { + "name": "动画音乐淡出时间", + "description": "设置动画音乐淡出的时间" + }, + "result_music_fade_out": { + "name": "结果音乐淡出时间", + "description": "设置结果音乐淡出的时间" + } + }, + "instant_draw_settings": { + "title": { + "name": "即抽设置", + "description": "即时抽取功能的相关设置" + }, + "extraction_function": { + "name": "抽取功能", + "description": "即抽抽取功能相关设置" + }, + "display_settings": { + "name": "显示设置", + "description": "即抽结果显示相关设置" + }, + "basic_animation_settings": { + "name": "动画设置", + "description": "即抽动画效果相关设置" + }, + "color_theme_settings": { + "name": "颜色主题设置", + "description": "即抽结果显示的颜色主题相关设置" + }, + "student_image_settings": { + "name": "学生头像设置", + "description": "即抽结果显示的学生头像相关设置" + }, + "music_settings": { + "name": "音乐设置", + "description": "即抽音乐相关设置" + }, + "draw_mode": { + "name": "抽取模式", + "description": "设置即抽抽取的模式", + "combo_items": [ + "重复抽取", + "不重复抽取", + "半重复抽取" + ] + }, + "clear_record": { + "name": "清除抽取记录方式", + "description": "设置清除即抽抽取记录的方式", + "combo_items": [ + "重启后清除", + "直到全部抽取完" + ], + "combo_items_other": [ + "重启后清除", + "直到全部抽取完", + "无需清除" + ] + }, + "half_repeat": { + "name": "半重复抽取次数", + "description": "设置半重复抽取的次数" + }, + "clear_time": { + "name": "抽取后定时清除时间", + "description": "设置抽取后定时清除记录的时间(秒)" + }, + "draw_type": { + "name": "抽取方式", + "description": "设置即抽抽取的方式", + "combo_items": [ + "随机抽取", + "公平抽取" + ] + }, + "font_size": { + "name": "字体大小", + "description": "设置即抽结果显示的字体大小" + }, + "display_format": { + "name": "结果显示格式", + "description": "设置即抽结果的显示格式", + "combo_items": [ + "学号+姓名", + "姓名", + "学号" + ] + }, + "show_random": { + "name": "显示随机组员格式", + "description": "设置随机组员的显示格式", + "combo_items": [ + "不显示", + "组名[换行]姓名", + "组名[短横杠]姓名" + ] + }, + "animation": { + "name": "动画模式", + "description": "设置即抽抽取的动画效果", + "combo_items": [ + "手动停止动画", + "自动播放动画", + "直接显示结果" + ] + }, + "animation_interval": { + "name": "动画间隔", + "description": "设置即抽动画的间隔时间(毫秒)" + }, + "autoplay_count": { + "name": "自动播放次数", + "description": "设置即抽动画自动播放的次数" + }, + "animation_color_theme": { + "name": "动画颜色主题", + "description": "设置即抽动画的颜色主题", + "combo_items": [ + "关闭", + "随机颜色", + "固定颜色" + ] + }, + "result_color_theme": { + "name": "结果颜色主题", + "description": "设置即抽结果显示的颜色主题", + "combo_items": [ + "关闭", + "随机颜色", + "固定颜色" + ] + }, + "animation_fixed_color": { + "name": "动画固定颜色", + "description": "设置即抽动画的固定颜色" + }, + "result_fixed_color": { + "name": "结果固定颜色", + "description": "设置即抽结果显示的固定颜色" + }, + "student_image": { + "name": "显示学生图片", + "description": "设置是否显示学生图片", + "switchbutton_name": { + "enable": "显示", + "disable": "隐藏" + } + }, + "open_student_image_folder": { + "name": "学生图片文件夹", + "description": "管理学生图片文件,图片文件名需与学生姓名一致" + }, + "animation_music": { + "name": "动画音乐", + "description": "设置是否播放动画音乐", + "switchbutton_name": { + "enable": "播放", + "disable": "关闭" + } + }, + "result_music": { + "name": "结果音乐", + "description": "设置是否播放结果音乐", + "switchbutton_name": { + "enable": "播放", + "disable": "关闭" + } + }, + "open_animation_music_folder": { + "name": "打开动画音乐文件夹", + "description": "管理动画音乐文件并支持随机播放功能" + }, + "open_result_music_folder": { + "name": "打开结果音乐文件夹", + "description": "管理结果音乐文件并支持随机播放功能" + }, + "animation_music_volume": { + "name": "动画音乐音量", + "description": "设置动画音乐的音量" + }, + "result_music_volume": { + "name": "结果音乐音量", + "description": "设置结果音乐的音量" + }, + "animation_music_fade_in": { + "name": "动画音乐淡入时间", + "description": "设置动画音乐淡入的时间" + }, + "result_music_fade_in": { + "name": "结果音乐淡入时间", + "description": "设置结果音乐淡入的时间" + }, + "animation_music_fade_out": { + "name": "动画音乐淡出时间", + "description": "设置动画音乐淡出的时间" + }, + "result_music_fade_out": { + "name": "结果音乐淡出时间", + "description": "设置结果音乐淡出的时间" + } + }, + "custom_draw_settings": { + "title": { + "name": "自定义抽设置", + "description": "自定义抽设置" + } + }, + "lottery_settings": { + "title": { + "name": "抽奖设置", + "description": "抽奖设置" + }, + "extraction_function": { + "name": "抽取功能", + "description": "抽奖抽取功能相关设置" + }, + "display_settings": { + "name": "显示设置", + "description": "抽奖结果显示相关设置" + }, + "basic_animation_settings": { + "name": "动画设置", + "description": "抽奖动画效果相关设置" + }, + "color_theme_settings": { + "name": "颜色主题设置", + "description": "抽奖结果显示的颜色主题相关设置" + }, + "student_image_settings": { + "name": "奖品图片设置", + "description": "抽奖结果显示的奖品图片相关设置" + }, + "music_settings": { + "name": "音乐设置", + "description": "抽奖音乐相关设置" + }, + "draw_mode": { + "name": "抽取模式", + "description": "设置抽奖抽取的模式", + "combo_items": [ + "重复抽取", + "不重复抽取", + "半重复抽取" + ] + }, + "clear_record": { + "name": "清除抽取记录方式", + "description": "设置清除抽奖抽取记录的方式", + "combo_items": [ + "重启后清除", + "直到全部抽取完" + ], + "combo_items_other": [ + "重启后清除", + "直到全部抽取完", + "无需清除" + ] + }, + "half_repeat": { + "name": "半重复抽取次数", + "description": "设置半重复抽取的次数" + }, + "clear_time": { + "name": "抽取后定时清除时间", + "description": "设置抽取后定时清除记录的时间(秒)" + }, + "draw_type": { + "name": "抽取方式", + "description": "设置抽奖抽取的方式", + "combo_items": [ + "随机抽取", + "公平抽取" + ] + }, + "font_size": { + "name": "字体大小", + "description": "设置抽奖结果显示的字体大小" + }, + "display_format": { + "name": "结果显示格式", + "description": "设置抽奖结果的显示格式", + "combo_items": [ + "序号+名称", + "名称", + "序号" + ] + }, + "animation": { + "name": "动画模式", + "description": "设置抽奖抽取的动画效果", + "combo_items": [ + "手动停止动画", + "自动播放动画", + "直接显示结果" + ] + }, + "animation_interval": { + "name": "动画间隔", + "description": "设置抽奖动画的间隔时间(毫秒)" + }, + "autoplay_count": { + "name": "自动播放次数", + "description": "设置抽奖动画自动播放的次数" + }, + "animation_color_theme": { + "name": "动画颜色主题", + "description": "设置抽奖动画的颜色主题", + "combo_items": [ + "关闭", + "随机颜色", + "固定颜色" + ] + }, + "result_color_theme": { + "name": "结果颜色主题", + "description": "设置抽奖结果显示的颜色主题", + "combo_items": [ + "关闭", + "随机颜色", + "固定颜色" + ] + }, + "animation_fixed_color": { + "name": "动画固定颜色", + "description": "设置抽奖动画的固定颜色" + }, + "result_fixed_color": { + "name": "结果固定颜色", + "description": "设置抽奖结果显示的固定颜色" + }, + "lottery_image": { + "name": "显示学生图片", + "description": "设置是否显示学生图片", + "switchbutton_name": { + "enable": "显示", + "disable": "隐藏" + } + }, + "open_lottery_image_folder": { + "name": "奖品图片文件夹", + "description": "管理奖品图片文件,图片文件名需与奖品名称一致" + }, + "animation_music": { + "name": "动画音乐", + "description": "设置是否播放动画音乐", + "switchbutton_name": { + "enable": "播放", + "disable": "关闭" + } + }, + "result_music": { + "name": "结果音乐", + "description": "设置是否播放结果音乐", + "switchbutton_name": { + "enable": "播放", + "disable": "关闭" + } + }, + "open_animation_music_folder": { + "name": "打开动画音乐文件夹", + "description": "管理动画音乐文件并支持随机播放功能" + }, + "open_result_music_folder": { + "name": "打开结果音乐文件夹", + "description": "管理结果音乐文件并支持随机播放功能" + }, + "animation_music_volume": { + "name": "动画音乐音量", + "description": "设置动画音乐的音量" + }, + "result_music_volume": { + "name": "结果音乐音量", + "description": "设置结果音乐的音量" + }, + "animation_music_fade_in": { + "name": "动画音乐淡入时间", + "description": "设置动画音乐淡入的时间" + }, + "result_music_fade_in": { + "name": "结果音乐淡入时间", + "description": "设置结果音乐淡入的时间" + }, + "animation_music_fade_out": { + "name": "动画音乐淡出时间", + "description": "设置动画音乐淡出的时间" + }, + "result_music_fade_out": { + "name": "结果音乐淡出时间", + "description": "设置结果音乐淡出的时间" + } + }, + "safety_settings": { + "title": { + "name": "安全设置", + "description": "安全设置" + } + }, + "basic_safety_settings": { + "title": { + "name": "基础安全设置", + "description": "基础安全设置" + }, + "verification_method": { + "name": "验证方式", + "description": "设置安全功能的验证方式" + }, + "verification_process": { + "name": "安全验证步骤", + "description": "设置安全功能的验证步骤", + "combo_items": [ + "单步验证(任选一种方式)", + "仅 密码", + "仅 TOTP", + "仅 U盘解锁", + "密码 + TOTP", + "密码 + U盘解锁", + "TOTP + U盘解锁", + "密码 + TOTP + U盘解锁" + ] + }, + "security_operations": { + "name": "安全操作", + "description": "设置安全操作的验证方式" + }, + "safety_switch": { + "name": "安全开关", + "description": "开启后,所有带有安全操作的功能都需要验证密码", + "switchbutton_name": { + "enable": "启用", + "disable": "禁用" + } + }, + "set_password": { + "name": "设置/修改密码", + "description": "设置或修改安全密码" + }, + "totp_switch": { + "name": "是否开启TOTP开关", + "description": "开启后,将可以在安全操作中使用TOTP", + "switchbutton_name": { + "enable": "启用", + "disable": "禁用" + } + }, + "set_totp": { + "name": "设置TOTP", + "description": "设置TOTP" + }, + "usb_switch": { + "name": "是否开启U盘开关", + "description": "开启后,将可以在安全操作中使用U盘解锁", + "switchbutton_name": { + "enable": "启用", + "disable": "禁用" + } + }, + "bind_usb": { + "name": "绑定U盘", + "description": "绑定U盘解锁" + }, + "unbind_usb": { + "name": "解绑U盘", + "description": "解绑U盘解锁" + }, + "show_hide_floating_window_switch": { + "name": "显示/隐藏操作是否需安全验证", + "description": "开启后可在安全操作中显示/隐藏悬浮窗,需安全验证", + "switchbutton_name": { + "enable": "启用", + "disable": "禁用" + } + }, + "restart_switch": { + "name": "重启操作是否需安全验证", + "description": "开启后重启软件,需安全验证", + "switchbutton_name": { + "enable": "启用", + "disable": "禁用" + } + }, + "exit_switch": { + "name": "退出操作是否需安全验证", + "description": "开启后退出软件,需安全验证", + "switchbutton_name": { + "enable": "启用", + "disable": "禁用" + } + } + }, + "advanced_safety_settings": { + "title": { + "name": "进阶安全设置", + "description": "进阶安全设置" + }, + "strong_protection": { + "name": "强力防删除设置", + "description": "强力防删除功能设置" + }, + "data_encryption": { + "name": "数据加密设置", + "description": "数据加密功能设置" + }, + "encryption_strong_switch": { + "name": "软件主程序自我保护", + "description": "开启后软件主程序将启用自我保护功能", + "switchbutton_name": { + "enable": "启用", + "disable": "禁用" + } + }, + "encryption_strong_mode": { + "name": "保护强度模式", + "description": "选择软件自我保护强度模式", + "combo_items": [ + "仅软件目录备份", + "软件目录+系统缓存目录备份" + ] + }, + "encryption_list_switch": { + "name": "加密名单文件", + "description": "开启后软件将加密名单文件", + "switchbutton_name": { + "enable": "启用", + "disable": "禁用" + } + }, + "encryption_history_switch": { + "name": "加密历史记录", + "description": "开启后软件将加密历史记录", + "switchbutton_name": { + "enable": "启用", + "disable": "禁用" + } + }, + "encryption_temp_switch": { + "name": "加密临时记录", + "description": "开启后软件将加密临时已抽取记录", + "switchbutton_name": { + "enable": "启用", + "disable": "禁用" + } + } + }, + "custom_settings": { + "title": { + "name": "个性设置", + "description": "个性设置" + } + }, + "page_management": { + "title": { + "name": "页面管理", + "description": "页面管理设置" + }, + "roll_call": { + "name": "点名设置", + "description": "点名设置" + }, + "lottery": { + "name": "抽奖设置", + "description": "抽奖设置" + }, + "roll_call_method": { + "name": "点名控制面板位置", + "description": "配置点名控制面板位置", + "combo_items": [ + "左侧", + "右侧", + "左侧底部", + "右侧底部" + ] + }, + "show_name": { + "name": "名称设置按钮", + "description": "开启后软件将显示名称设置按钮", + "switchbutton_name": { + "enable": "显示", + "disable": "隐藏" + } + }, + "reset_roll_call": { + "name": "重置点名按钮", + "description": "开启后软件将显示重置点名按钮", + "switchbutton_name": { + "enable": "显示", + "disable": "隐藏" + } + }, + "roll_call_quantity_control": { + "name": "增加/减少抽取数量控制条", + "description": "开启后软件将显示增加/减少抽取数量控制条", + "switchbutton_name": { + "enable": "显示", + "disable": "隐藏" + } + }, + "roll_call_start_button": { + "name": "开始按钮", + "description": "开启后软件将显示开始按钮", + "switchbutton_name": { + "enable": "显示", + "disable": "隐藏" + } + }, + "roll_call_list": { + "name": "点名名单切换下拉框", + "description": "开启后软件将显示点名名单切换下拉框", + "switchbutton_name": { + "enable": "显示", + "disable": "隐藏" + } + }, + "roll_call_range": { + "name": "点名范围下拉框", + "description": "开启后软件将显示点名范围", + "switchbutton_name": { + "enable": "显示", + "disable": "隐藏" + } + }, + "roll_call_gender": { + "name": "点名性别范围下拉框", + "description": "开启后软件将显示点名性别范围下拉框", + "switchbutton_name": { + "enable": "显示", + "disable": "隐藏" + } + }, + "roll_call_quantity_label": { + "name": "数量标签", + "description": "开启后软件将显示人数/组数数量标签", + "switchbutton_name": { + "enable": "显示", + "disable": "隐藏" + } + }, + "lottery_method": { + "name": "抽奖控制面板位置", + "description": "配置抽奖控制面板位置", + "combo_items": [ + "左侧", + "右侧", + "左侧底部", + "右侧底部" + ] + }, + "show_lottery_name": { + "name": "名称设置按钮", + "description": "开启后软件将显示名称设置按钮", + "switchbutton_name": { + "enable": "显示", + "disable": "隐藏" + } + }, + "reset_lottery": { + "name": "重置抽奖按钮", + "description": "开启后软件将显示重置抽奖按钮", + "switchbutton_name": { + "enable": "显示", + "disable": "隐藏" + } + }, + "lottery_quantity_control": { + "name": "增加/减少抽取数量控制条", + "description": "开启后软件将显示增加/减少抽取数量控制条", + "switchbutton_name": { + "enable": "显示", + "disable": "隐藏" + } + }, + "lottery_start_button": { + "name": "开始按钮", + "description": "开启后软件将显示开始按钮", + "switchbutton_name": { + "enable": "显示", + "disable": "隐藏" + } + }, + "lottery_list": { + "name": "抽奖名单切换下拉框", + "description": "开启后软件将显示抽奖名单切换下拉框", + "switchbutton_name": { + "enable": "显示", + "disable": "隐藏" + } + }, + "lottery_quantity_label": { + "name": "数量标签", + "description": "开启后软件将显示奖数标签", + "switchbutton_name": { + "enable": "显示", + "disable": "隐藏" + } + } + }, + "floating_window_management": { + "title": { + "name": "浮窗管理", + "description": "配置浮窗管理相关设置" + }, + "basic_settings": { + "name": "基本设置", + "description": "配置浮窗管理基本设置" + }, + "appearance_settings": { + "name": "外观设置", + "description": "配置浮窗管理外观设置" + }, + "edge_settings": { + "name": "贴边设置", + "description": "配置浮窗管理贴边设置" + }, + "startup_display_floating_window": { + "name": "软件启动时显示浮窗", + "description": "配置软件启动时是否显示浮窗", + "switchbutton_name": { + "enable": "显示", + "disable": "隐藏" + } + }, + "floating_window_opacity": { + "name": "浮窗透明度", + "description": "配置浮窗透明度" + }, + "reset_floating_window_position_button": { + "name": "重置浮窗位置按钮", + "description": "点击后将浮窗位置重置为默认位置", + "pushbutton_name": "重置位置" + }, + "floating_window_button_control": { + "name": "浮窗控件配置", + "description": "配置浮窗中显示的按钮", + "combo_items": [ + "显示 拖动", + "显示 主界面", + "显示 闪抽", + "显示 拖动+主界面", + "显示 主界面+闪抽", + "显示 拖动+闪抽", + "显示 拖动+主界面+闪抽", + "显示 即抽" + ] + }, + "floating_window_placement": { + "name": "浮窗排列", + "description": "配置浮窗控件排列", + "combo_items": [ + "矩形排列", + "竖向排列", + "横向排列" + ] + }, + "floating_window_display_style": { + "name": "浮窗显示样式", + "description": "配置浮窗控件显示样式", + "combo_items": [ + "图标+文字", + "图标", + "文字" + ] + }, + "floating_window_stick_to_edge": { + "name": "贴边设置", + "description": "配置浮窗是否贴边", + "switchbutton_name": { + "enable": "贴边", + "disable": "不贴边" + } + }, + "floating_window_stick_to_edge_recover_seconds": { + "name": "贴边收纳时间", + "description": "配置浮窗贴边后收纳时间" + }, + "floating_window_stick_to_edge_display_style": { + "name": "贴边显示样式", + "description": "配置浮窗贴边后显示样式", + "combo_items": [ + "图标", + "文字", + "箭头" + ] + } + }, + "sidebar_tray_management": { + "title": { + "name": "侧边栏/托盘管理", + "description": "配置侧边栏/托盘管理相关设置" + } + }, + "sidebar_management_window": { + "title": { + "name": "主界面侧边栏", + "description": "配置主界面侧边栏管理相关设置" + }, + "roll_call_sidebar_position": { + "name": "点名侧边栏位置", + "description": "配置点名侧边栏位置", + "combo_items": [ + "顶部", + "底部", + "不显示" + ] + }, + "custom_roll_call_sidebar_position": { + "name": "自定义抽侧边栏位置", + "description": "配置自定义抽侧边栏位置", + "combo_items": [ + "顶部", + "底部", + "不显示" + ] + }, + "lottery_sidebar_position": { + "name": "抽奖侧边栏位置", + "description": "配置抽奖侧边栏位置", + "combo_items": [ + "顶部", + "底部", + "不显示" + ] + }, + "main_window_history": { + "name": "主窗口历史记录位置", + "description": "配置主窗口历史记录位置", + "combo_items": [ + "顶部", + "底部", + "不显示" + ] + }, + "settings_icon": { + "name": "设置图标位置", + "description": "配置侧边栏管理设置图标位置", + "combo_items": [ + "顶部", + "底部", + "不显示" + ] + } + }, + "sidebar_management_settings": { + "title": { + "name": "设置窗口侧边栏", + "description": "配置设置窗口侧边栏管理设置" + }, + "home": { + "name": "首页位置", + "description": "配置侧边栏管理首页位置", + "combo_items": [ + "顶部", + "底部", + "不显示" + ] + }, + "base_settings": { + "name": "基础设置", + "description": "配置基础设置", + "combo_items": [ + "顶部", + "底部", + "不显示" + ] + }, + "name_management": { + "name": "名单管理", + "description": "配置名单管理", + "combo_items": [ + "顶部", + "底部", + "不显示" + ] + }, + "draw_settings": { + "name": "抽取设置", + "description": "配置抽取设置", + "combo_items": [ + "顶部", + "底部", + "不显示" + ] + }, + "notification_service": { + "name": "通知服务", + "description": "配置通知服务", + "combo_items": [ + "顶部", + "底部", + "不显示" + ] + }, + "security_settings": { + "name": "安全设置", + "description": "配置安全设置", + "combo_items": [ + "顶部", + "底部", + "不显示" + ] + }, + "personal_settings": { + "name": "个性设置", + "description": "配置个性设置", + "combo_items": [ + "顶部", + "底部", + "不显示" + ] + }, + "voice_settings": { + "name": "语音设置", + "description": "配置语音设置", + "combo_items": [ + "顶部", + "底部", + "不显示" + ] + }, + "settings_history": { + "name": "设置界面历史记录", + "description": "配置设置界面历史记录", + "combo_items": [ + "顶部", + "底部", + "不显示" + ] + }, + "more_settings": { + "name": "更多设置", + "description": "配置更多设置", + "combo_items": [ + "顶部", + "底部", + "不显示" + ] + } + }, + "tray_management": { + "title": { + "name": "托盘管理", + "description": "配置托盘管理相关设置" + }, + "show_hide_main_window": { + "name": "暂时显示/隐藏主界面", + "description": "配置暂时显示/隐藏主界面", + "switchbutton_name": { + "enable": "显示", + "disable": "隐藏" + } + }, + "open_settings": { + "name": "打开设置窗口", + "description": "配置打开设置窗口", + "switchbutton_name": { + "enable": "显示", + "disable": "隐藏" + } + }, + "show_hide_float_window": { + "name": "暂时显示/隐藏浮窗", + "description": "配置暂时显示/隐藏浮窗", + "switchbutton_name": { + "enable": "显示", + "disable": "隐藏" + } + }, + "restart": { + "name": "重启应用", + "description": "配置重启应用", + "switchbutton_name": { + "enable": "重启", + "disable": "不重启" + } + }, + "exit": { + "name": "退出应用", + "description": "配置退出应用", + "switchbutton_name": { + "enable": "退出", + "disable": "不退出" + } + } + }, + "voice_settings": { + "title": { + "name": "语音设置", + "description": "语音设置页面" + } + }, + "basic_voice_settings": { + "title": { + "name": "基本语音设置", + "description": "基本语音设置" + }, + "voice_engine_group": { + "name": "语音引擎", + "description": "选择语音合成引擎" + }, + "volume_group": { + "name": "音量设置", + "description": "设置语音播放的音量大小" + }, + "system_volume_group": { + "name": "系统音量控制", + "description": "选择要控制的系统音量类型" + }, + "voice_engine": { + "name": "语音引擎", + "description": "选择语音合成引擎", + "combo_items": ["系统TTS", "Edge TTS"] + }, + "edge_tts_voice_name": { + "name": "Edge TTS-语音名称", + "description": "选择Edge TTS语音", + "combo_items": [ + "zh-CN-XiaoxiaoNeural", + "zh-CN-YunxiNeural", + "zh-CN-XiaoyiNeural", + "en-US-JennyNeural", + "en-US-GuyNeural" + ] + }, + "voice_playback": { + "name": "语音播放", + "description": "选择语音播放设备", + "combo_items": [ + "系统默认", "扬声器", "耳机", "蓝牙设备" + ] + }, + "volume_size": { + "name": "音量大小", + "description": "设置语音播放的音量大小" + }, + "speech_rate": { + "name": "语速调节", + "description": "设置语音播放的语速" + }, + "system_volume_control": { + "name": "系统音量控制", + "description": "选择要控制的系统音量类型", + "combo_items": [ + "主音量", "应用音量", "系统音效", "麦克风音量" + ] + }, + "system_volume_size": { + "name": "系统音量大小", + "description": "设置系统音量大小" + } + }, + "more_settings": { + "title": { + "name": "更多设置", + "description": "更多设置" + } + }, + "debug":{ + "title": { + "name": "调试设置", + "description": "调试设置" + } + }, + "about": { + "title": { + "name": "关于", + "description": "软件关于页面" + }, + "github": { + "name": "Github", + "description": "访问项目仓库" + }, + "bilibili": { + "name": "Bilibili", + "description": "访问 黎泽懿_Aionflux 的 Bilibili 账号" + }, + "contributor": { + "name": "贡献人员", + "description": "点击查看详细贡献者信息", + "contributor_role_1": "设计 & 创意 & 策划 &\n维护 & 文档& 测试", + "contributor_role_2": "创意 & 维护", + "contributor_role_3": "应用测试 & 文档 & 安装包制作", + "contributor_role_4": "响应式前端页面\n设计及维护 & 文档", + "contributor_role_5": "创意 & 文档", + "contributor_role_6": "响应式前端页面\n设计及维护 & 文档" + }, + "donation": { + "name": "捐赠支持", + "description": "支持项目发展,感谢您的捐赠" + }, + "check_update": { + "name": "检查更新", + "description": "检查当前是否为最新版本" + }, + "website": { + "name": "SecRandom 官网", + "description": "访问 SecRandom 软件官网" + }, + "channel": { + "name": "更新通道", + "description": "选择 SecRandom 软件更新通道", + "combo_items": [ + "正式版本", + "测试版本" + ] + }, + "copyright": { + "name": "版权", + "description": "SecRandom 遵循 GPL-3.0 协议" + }, + "version": { + "name": "版本", + "description": "显示当前软件版本号" + } + } +} From ac4ecff89b313dd327a3644df1de7cae417de0de Mon Sep 17 00:00:00 2001 From: Macros Date: Sat, 1 Nov 2025 19:31:37 +0800 Subject: [PATCH 04/27] Update English translations in EN_US.json Signed-off-by: Macros --- .../Language/{en_US.json => EN_US.json} | 24 +++++++++---------- 1 file changed, 12 insertions(+), 12 deletions(-) rename app/resources/Language/{en_US.json => EN_US.json} (99%) diff --git a/app/resources/Language/en_US.json b/app/resources/Language/EN_US.json similarity index 99% rename from app/resources/Language/en_US.json rename to app/resources/Language/EN_US.json index 6fe2b3fd..cc66a7a1 100644 --- a/app/resources/Language/en_US.json +++ b/app/resources/Language/EN_US.json @@ -1,31 +1,31 @@ { "translate_JSON_file": { - "name":"中文简体", + "name":"English (United States)", "entertainment": false, - "translated_personnel": "lzy98276" + "translated_personnel": "MacrosMeng" }, "home": { "title": { - "name": "主页", - "description": "软件主页" + "name": "Homepage", + "description": "The homepage of this software" } }, "basic_settings": { "title": { - "name": "基础设置", - "description": "软件基础设置" + "name": "General Settings", + "description": "The general settings of this app" }, "basic_function": { - "name": "基础功能", - "description": "软件基础功能" + "name": "Basic Features", + "description": "Features of this app" }, "data_management": { - "name": "数据管理", - "description": "数据管理" + "name": "Data management", + "description": "Manage your data" }, "personalised": { - "name": "个性化", - "description": "软件个性化设置" + "name": "Customize", + "description": "Customize your app" }, "autostart": { "name": "开机自启", From f9b3532519409725584e8d1fb38349a373a35a64 Mon Sep 17 00:00:00 2001 From: Macros Date: Sat, 1 Nov 2025 19:43:45 +0800 Subject: [PATCH 05/27] use copilot to complete translation Signed-off-by: Macros --- app/resources/Language/EN_US.json | 1698 +++++++++-------------------- 1 file changed, 504 insertions(+), 1194 deletions(-) diff --git a/app/resources/Language/EN_US.json b/app/resources/Language/EN_US.json index cc66a7a1..aede3317 100644 --- a/app/resources/Language/EN_US.json +++ b/app/resources/Language/EN_US.json @@ -1,6 +1,6 @@ { "translate_JSON_file": { - "name":"English (United States)", + "name": "English (United States)", "entertainment": false, "translated_personnel": "MacrosMeng" }, @@ -20,7 +20,7 @@ "description": "Features of this app" }, "data_management": { - "name": "Data management", + "name": "Data Management", "description": "Manage your data" }, "personalised": { @@ -28,1678 +28,988 @@ "description": "Customize your app" }, "autostart": { - "name": "开机自启", - "description": "设置软件是否在开机时自动启动", + "name": "Autostart on Boot", + "description": "Set whether the app starts automatically on system boot", "switchbutton_name": { - "enable": "开启", - "disable": "关闭" + "enable": "Enable", + "disable": "Disable" } }, "check_update": { - "name": "检查更新", - "description": "设置是否在启动时检查软件更新", + "name": "Check for Updates", + "description": "Set whether to check for updates at startup", "switchbutton_name": { - "enable": "启用", - "disable": "禁用" + "enable": "Enable", + "disable": "Disable" } }, "show_startup_window": { - "name": "显示启动窗口", - "description": "设置是否在启动时显示启动窗口", + "name": "Show Startup Window", + "description": "Set whether to show the startup window at launch", "switchbutton_name": { - "enable": "显示", - "disable": "不显示" + "enable": "Show", + "disable": "Don't show" } }, "export_diagnostic_data": { - "name": "导出诊断数据", - "description": "设置是否在退出时导出诊断数据", - "pushbutton_name": "导出诊断数据" + "name": "Export Diagnostic Data", + "description": "Set whether to export diagnostic data on exit", + "pushbutton_name": "Export Diagnostic Data" }, "export_settings": { - "name": "导出设置", - "description": "设置是否在退出时导出设置", - "pushbutton_name": "导出设置" + "name": "Export Settings", + "description": "Set whether to export settings on exit", + "pushbutton_name": "Export Settings" }, "import_settings": { - "name": "导入设置", - "description": "设置是否在启动时导入设置", - "pushbutton_name": "导入设置" + "name": "Import Settings", + "description": "Set whether to import settings on startup", + "pushbutton_name": "Import Settings" }, "export_all_data": { - "name": "导出所有数据", - "description": "设置是否在退出时导出所有数据", - "pushbutton_name": "导出所有数据" + "name": "Export All Data", + "description": "Set whether to export all data on exit", + "pushbutton_name": "Export All Data" }, "import_all_data": { - "name": "导入所有数据", - "description": "设置是否在启动时导入所有数据", - "pushbutton_name": "导入所有数据" + "name": "Import All Data", + "description": "Set whether to import all data on startup", + "pushbutton_name": "Import All Data" }, "dpiScale": { - "name": "DPI缩放", - "description": "设置软件DPI缩放比例(重启生效)", - "combo_items": ["100%", "125%", "150%", "175%", "200%", "Auto"] + "name": "DPI Scale", + "description": "Set the app DPI scaling (requires restart)", + "combo_items": [ + "100%", + "125%", + "150%", + "175%", + "200%", + "Auto" + ] }, "font": { - "name": "字体", - "description": "设置软件字体(重启生效)" + "name": "Font", + "description": "Set the app font (requires restart)" }, "theme": { - "name": "主题", - "description": "设置软件主题", - "combo_items": ["浅色", "深色", "跟随系统设置"] + "name": "Theme", + "description": "Set the app theme", + "combo_items": [ + "Light", + "Dark", + "Follow system settings" + ] }, "theme_color": { - "name": "主题色", - "description": "软件主题色" + "name": "Theme Color", + "description": "App theme color" }, "language": { - "name": "语言", - "description": "设置软件语言(重启生效)" + "name": "Language", + "description": "Set the app language (requires restart)" } }, "list_management": { "title": { - "name": "名单管理", - "description": "软件名单管理页面" + "name": "List Management", + "description": "The app's list management page" } }, "roll_call_list": { "title": { - "name": "点名名单", - "description": "点名名单" + "name": "Roll Call Lists", + "description": "Lists for roll call" }, "set_class_name": { - "name": "设置班级名称", - "description": "设置班级名称" + "name": "Set Class Name", + "description": "Set the class name" }, "select_class_name": { - "name": "选择班级", - "description": "选择班级" + "name": "Select Class", + "description": "Select a class" }, "import_student_name": { - "name": "导入学生名单", - "description": "导入学生名单" + "name": "Import Student List", + "description": "Import a list of students" }, "name_setting": { - "name": "设置姓名", - "description": "设置姓名" + "name": "Name Settings", + "description": "Configure names" }, "gender_setting": { - "name": "设置性别", - "description": "设置性别" + "name": "Gender Settings", + "description": "Configure gender" }, "group_setting": { - "name": "设置班级", - "description": "设置班级" + "name": "Group Settings", + "description": "Configure groups" }, "export_student_name": { - "name": "导出学生名单", - "description": "导出学生名单" + "name": "Export Student List", + "description": "Export the student list" } }, "roll_call_table": { "title": { - "name": "点名表格", - "description": "用于展示和管理点名名单的表格" + "name": "Roll Call Table", + "description": "Table for displaying and managing roll call lists" }, "HeaderLabels": { "name": [ - "存在", - "学号", - "姓名", - "性别", - "小组" + "Present", + "Student ID", + "Name", + "Gender", + "Group" ], - "description": "点名表格的列标题" + "description": "Column headers for the roll call table" } }, "custom_draw_list": { "title": { - "name": "自定义抽签", - "description": "自定义抽签" + "name": "Custom Draw", + "description": "Custom drawing (lottery) lists" } }, "lottery_list": { "title": { - "name": "抽奖名单", - "description": "抽奖名单" + "name": "Lottery Lists", + "description": "Lists for lotteries/prize draws" }, "set_pool_name": { - "name": "设置奖池名称", - "description": "设置奖池名称" + "name": "Set Prize Pool Name", + "description": "Set the name of the prize pool" }, "select_pool_name": { - "name": "选择奖池 ", - "description": "选择奖池" + "name": "Select Prize Pool", + "description": "Select a prize pool" }, "import_prize_name": { - "name": "导入奖品名单", - "description": "导入奖品名单" + "name": "Import Prize List", + "description": "Import a list of prizes" }, "prize_setting": { - "name": "设置奖品", - "description": "设置奖品" + "name": "Prize Settings", + "description": "Configure prizes" }, "prize_weight_setting": { - "name": "设置权重", - "description": "设置权重" + "name": "Set Weight", + "description": "Configure prize weight" }, "export_prize_name": { - "name": "导出奖品名单", - "description": "导出奖品名单" + "name": "Export Prize List", + "description": "Export the prize list" } }, "lottery_table": { "title": { - "name": "抽奖表格", - "description": "用于展示和管理抽奖名单的表格" + "name": "Lottery Table", + "description": "Table for displaying and managing lottery lists" }, "HeaderLabels": { "name": [ - "存在", - "序号", - "奖品", - "权重" + "Exists", + "Index", + "Prize", + "Weight" ], - "description": "抽奖表格的列标题" + "description": "Column headers for the lottery table" } }, "extraction_settings": { "title": { - "name": "抽取设置", - "description": "抽取设置" + "name": "Extraction Settings", + "description": "Settings related to extraction/drawing" } }, "roll_call_settings": { "title": { - "name": "点名设置", - "description": "点名设置" + "name": "Roll Call Settings", + "description": "Settings for roll call" }, "extraction_function": { - "name": "抽取功能", - "description": "点名抽取功能相关设置" + "name": "Extraction Functions", + "description": "Settings related to roll call extraction features" }, "display_settings": { - "name": "显示设置", - "description": "点名结果显示相关设置" + "name": "Display Settings", + "description": "Settings for how roll call results are displayed" }, "basic_animation_settings": { - "name": "动画设置", - "description": "点名动画效果相关设置" + "name": "Animation Settings", + "description": "Settings related to roll call animation effects" }, "color_theme_settings": { - "name": "颜色主题设置", - "description": "点名结果显示的颜色主题相关设置" + "name": "Color Theme Settings", + "description": "Color theme settings for roll call results display" }, "student_image_settings": { - "name": "学生头像设置", - "description": "点名结果显示的学生头像相关设置" + "name": "Student Avatar Settings", + "description": "Settings for student avatars in roll call results display" }, "music_settings": { - "name": "音乐设置", - "description": "点名音乐相关设置" + "name": "Music Settings", + "description": "Settings related to roll call music" }, "draw_mode": { - "name": "抽取模式", - "description": "设置点名抽取的模式", + "name": "Draw Mode", + "description": "Set the draw mode for roll call", "combo_items": [ - "重复抽取", - "不重复抽取", - "半重复抽取" + "Allow Repeats", + "No Repeats", + "Partial Repeats" ] }, "clear_record": { - "name": "清除抽取记录方式", - "description": "设置清除点名抽取记录的方式", + "name": "Clear Record Mode", + "description": "Set how roll call extraction records are cleared", "combo_items": [ - "重启后清除", - "直到全部抽取完" + "Clear After Restart", + "Until All Selected" ], "combo_items_other": [ - "重启后清除", - "直到全部抽取完", - "无需清除" + "Clear After Restart", + "Until All Selected", + "Never Clear" ] }, "half_repeat": { - "name": "半重复抽取次数", - "description": "设置半重复抽取的次数" + "name": "Partial Repeat Count", + "description": "Set the number of partial repeats" }, "clear_time": { - "name": "抽取后定时清除时间", - "description": "设置抽取后定时清除记录的时间(秒)" + "name": "Timed Clear After Extraction", + "description": "Set the time (seconds) after which extraction records are cleared" }, "draw_type": { - "name": "抽取方式", - "description": "设置点名抽取的方式", + "name": "Draw Type", + "description": "Set the draw type for roll call", "combo_items": [ - "随机抽取", - "公平抽取" + "Random Draw", + "Fair Draw" ] }, "font_size": { - "name": "字体大小", - "description": "设置点名结果显示的字体大小" + "name": "Font Size", + "description": "Set the font size for roll call results display" }, "display_format": { - "name": "结果显示格式", - "description": "设置点名结果的显示格式", + "name": "Result Display Format", + "description": "Set the format for displaying roll call results", "combo_items": [ - "学号+姓名", - "姓名", - "学号" + "Student ID + Name", + "Name", + "Student ID" ] }, "show_random": { - "name": "显示随机组员格式", - "description": "设置随机组员的显示格式", + "name": "Show Random Group Member Format", + "description": "Set how random group members are shown", "combo_items": [ - "不显示", - "组名[换行]姓名", - "组名[短横杠]姓名" + "Don't show", + "GroupName[Newline]Name", + "GroupName[-]Name" ] }, "animation": { - "name": "动画模式", - "description": "设置点名抽取的动画效果", + "name": "Animation Mode", + "description": "Set the animation effect for roll call draws", "combo_items": [ - "手动停止动画", - "自动播放动画", - "直接显示结果" + "Manual Stop Animation", + "Auto Play Animation", + "Show Result Immediately" ] }, "animation_interval": { - "name": "动画间隔", - "description": "设置点名动画的间隔时间(毫秒)" + "name": "Animation Interval", + "description": "Set the interval for roll call animation (ms)" }, "autoplay_count": { - "name": "自动播放次数", - "description": "设置点名动画自动播放的次数" + "name": "Autoplay Count", + "description": "Set how many times the roll call animation auto-plays" }, "animation_color_theme": { - "name": "动画颜色主题", - "description": "设置点名动画的颜色主题", + "name": "Animation Color Theme", + "description": "Set the color theme for roll call animation", "combo_items": [ - "关闭", - "随机颜色", - "固定颜色" + "Off", + "Random Colors", + "Fixed Color" ] }, "result_color_theme": { - "name": "结果颜色主题", - "description": "设置点名结果显示的颜色主题", + "name": "Result Color Theme", + "description": "Set the color theme for roll call result display", "combo_items": [ - "关闭", - "随机颜色", - "固定颜色" + "Off", + "Random Colors", + "Fixed Color" ] }, "animation_fixed_color": { - "name": "动画固定颜色", - "description": "设置点名动画的固定颜色" + "name": "Animation Fixed Color", + "description": "Set the fixed color used during roll call animations" }, "result_fixed_color": { - "name": "结果固定颜色", - "description": "设置点名结果显示的固定颜色" + "name": "Result Fixed Color", + "description": "Set the fixed color used for roll call results display" }, "student_image": { - "name": "显示学生图片", - "description": "设置是否显示学生图片", + "name": "Show Student Images", + "description": "Set whether to show student images", "switchbutton_name": { - "enable": "显示", - "disable": "隐藏" + "enable": "Show", + "disable": "Hide" } }, "open_student_image_folder": { - "name": "学生图片文件夹", - "description": "管理学生图片文件,图片文件名需与学生姓名一致" + "name": "Student Image Folder", + "description": "Manage student image files; image filenames must match student names" }, "animation_music": { - "name": "动画音乐", - "description": "设置是否播放动画音乐", + "name": "Animation Music", + "description": "Set whether to play animation music", "switchbutton_name": { - "enable": "播放", - "disable": "关闭" + "enable": "Play", + "disable": "Off" } }, "result_music": { - "name": "结果音乐", - "description": "设置是否播放结果音乐", + "name": "Result Music", + "description": "Set whether to play result music", "switchbutton_name": { - "enable": "播放", - "disable": "关闭" + "enable": "Play", + "disable": "Off" } }, "open_animation_music_folder": { - "name": "打开动画音乐文件夹", - "description": "管理动画音乐文件并支持随机播放功能" + "name": "Open Animation Music Folder", + "description": "Manage animation music files and enable random playback" }, "open_result_music_folder": { - "name": "打开结果音乐文件夹", - "description": "管理结果音乐文件并支持随机播放功能" + "name": "Open Result Music Folder", + "description": "Manage result music files and enable random playback" }, "animation_music_volume": { - "name": "动画音乐音量", - "description": "设置动画音乐的音量" + "name": "Animation Music Volume", + "description": "Set the volume for animation music" }, "result_music_volume": { - "name": "结果音乐音量", - "description": "设置结果音乐的音量" + "name": "Result Music Volume", + "description": "Set the volume for result music" }, "animation_music_fade_in": { - "name": "动画音乐淡入时间", - "description": "设置动画音乐淡入的时间" + "name": "Animation Music Fade-In Time", + "description": "Set the fade-in time for animation music" }, "result_music_fade_in": { - "name": "结果音乐淡入时间", - "description": "设置结果音乐淡入的时间" + "name": "Result Music Fade-In Time", + "description": "Set the fade-in time for result music" }, "animation_music_fade_out": { - "name": "动画音乐淡出时间", - "description": "设置动画音乐淡出的时间" + "name": "Animation Music Fade-Out Time", + "description": "Set the fade-out time for animation music" }, "result_music_fade_out": { - "name": "结果音乐淡出时间", - "description": "设置结果音乐淡出的时间" + "name": "Result Music Fade-Out Time", + "description": "Set the fade-out time for result music" } }, "quick_draw_settings": { "title": { - "name": "闪抽设置", - "description": "闪抽设置" + "name": "Quick Draw Settings", + "description": "Settings for quick draws" }, "extraction_function": { - "name": "抽取功能", - "description": "闪抽抽取功能相关设置" + "name": "Extraction Functions", + "description": "Settings related to quick draw extraction features" }, "display_settings": { - "name": "显示设置", - "description": "闪抽结果显示相关设置" + "name": "Display Settings", + "description": "Settings for how quick draw results are displayed" }, "basic_animation_settings": { - "name": "动画设置", - "description": "闪抽动画效果相关设置" + "name": "Animation Settings", + "description": "Settings related to quick draw animation effects" }, "color_theme_settings": { - "name": "颜色主题设置", - "description": "闪抽结果显示的颜色主题相关设置" + "name": "Color Theme Settings", + "description": "Color theme settings for quick draw results display" }, "student_image_settings": { - "name": "学生头像设置", - "description": "闪抽结果显示的学生头像相关设置" + "name": "Student Avatar Settings", + "description": "Settings for student avatars in quick draw results display" }, "music_settings": { - "name": "音乐设置", - "description": "闪抽音乐相关设置" + "name": "Music Settings", + "description": "Settings related to quick draw music" }, "draw_mode": { - "name": "抽取模式", - "description": "设置闪抽抽取的模式", + "name": "Draw Mode", + "description": "Set the draw mode for quick draw", "combo_items": [ - "重复抽取", - "不重复抽取", - "半重复抽取" + "Allow Repeats", + "No Repeats", + "Partial Repeats" ] }, "clear_record": { - "name": "清除抽取记录方式", - "description": "设置清除闪抽抽取记录的方式", + "name": "Clear Record Mode", + "description": "Set how quick draw extraction records are cleared", "combo_items": [ - "重启后清除", - "直到全部抽取完" + "Clear After Restart", + "Until All Selected" ], "combo_items_other": [ - "重启后清除", - "直到全部抽取完", - "无需清除" + "Clear After Restart", + "Until All Selected", + "Never Clear" ] }, "half_repeat": { - "name": "半重复抽取次数", - "description": "设置半重复抽取的次数" + "name": "Partial Repeat Count", + "description": "Set the number of partial repeats" }, "clear_time": { - "name": "抽取后定时清除时间", - "description": "设置抽取后定时清除记录的时间(秒)" + "name": "Timed Clear After Extraction", + "description": "Set the time (seconds) after which extraction records are cleared" }, "draw_type": { - "name": "抽取方式", - "description": "设置闪抽抽取的方式", + "name": "Draw Type", + "description": "Set the draw type for quick draw", "combo_items": [ - "随机抽取", - "公平抽取" + "Random Draw", + "Fair Draw" ] }, "font_size": { - "name": "字体大小", - "description": "设置闪抽结果显示的字体大小" + "name": "Font Size", + "description": "Set the font size for quick draw results display" }, "display_format": { - "name": "结果显示格式", - "description": "设置闪抽结果的显示格式", + "name": "Result Display Format", + "description": "Set the format for displaying quick draw results", "combo_items": [ - "学号+姓名", - "姓名", - "学号" + "Student ID + Name", + "Name", + "Student ID" ] }, "show_random": { - "name": "显示随机组员格式", - "description": "设置随机组员的显示格式", + "name": "Show Random Group Member Format", + "description": "Set how random group members are shown", "combo_items": [ - "不显示", - "组名[换行]姓名", - "组名[短横杠]姓名" + "Don't show", + "GroupName[Newline]Name", + "GroupName[-]Name" ] }, "animation": { - "name": "动画模式", - "description": "设置闪抽抽取的动画效果", + "name": "Animation Mode", + "description": "Set the animation effect for quick draw", "combo_items": [ - "手动停止动画", - "自动播放动画", - "直接显示结果" + "Manual Stop Animation", + "Auto Play Animation", + "Show Result Immediately" ] }, "animation_interval": { - "name": "动画间隔", - "description": "设置闪抽动画的间隔时间(毫秒)" + "name": "Animation Interval", + "description": "Set the interval for quick draw animation (ms)" }, "autoplay_count": { - "name": "自动播放次数", - "description": "设置闪抽动画自动播放的次数" + "name": "Autoplay Count", + "description": "Set how many times the quick draw animation auto-plays" }, "animation_color_theme": { - "name": "动画颜色主题", - "description": "设置闪抽动画的颜色主题", + "name": "Animation Color Theme", + "description": "Set the color theme for quick draw animation", "combo_items": [ - "关闭", - "随机颜色", - "固定颜色" + "Off", + "Random Colors", + "Fixed Color" ] }, "result_color_theme": { - "name": "结果颜色主题", - "description": "设置闪抽结果显示的颜色主题", + "name": "Result Color Theme", + "description": "Set the color theme for quick draw result display", "combo_items": [ - "关闭", - "随机颜色", - "固定颜色" + "Off", + "Random Colors", + "Fixed Color" ] }, "animation_fixed_color": { - "name": "动画固定颜色", - "description": "设置闪抽动画的固定颜色" + "name": "Animation Fixed Color", + "description": "Set the fixed color used during quick draw animations" }, "result_fixed_color": { - "name": "结果固定颜色", - "description": "设置闪抽结果显示的固定颜色" + "name": "Result Fixed Color", + "description": "Set the fixed color used for quick draw results display" }, "student_image": { - "name": "显示学生图片", - "description": "设置是否显示学生图片", + "name": "Show Student Images", + "description": "Set whether to show student images", "switchbutton_name": { - "enable": "显示", - "disable": "隐藏" + "enable": "Show", + "disable": "Hide" } }, "open_student_image_folder": { - "name": "学生图片文件夹", - "description": "管理学生图片文件,图片文件名需与学生姓名一致" + "name": "Student Image Folder", + "description": "Manage student image files; image filenames must match student names" }, "animation_music": { - "name": "动画音乐", - "description": "设置是否播放动画音乐", + "name": "Animation Music", + "description": "Set whether to play animation music", "switchbutton_name": { - "enable": "播放", - "disable": "关闭" + "enable": "Play", + "disable": "Off" } }, "result_music": { - "name": "结果音乐", - "description": "设置是否播放结果音乐", + "name": "Result Music", + "description": "Set whether to play result music", "switchbutton_name": { - "enable": "播放", - "disable": "关闭" + "enable": "Play", + "disable": "Off" } }, "open_animation_music_folder": { - "name": "打开动画音乐文件夹", - "description": "管理动画音乐文件并支持随机播放功能" + "name": "Open Animation Music Folder", + "description": "Manage animation music files and enable random playback" }, "open_result_music_folder": { - "name": "打开结果音乐文件夹", - "description": "管理结果音乐文件并支持随机播放功能" + "name": "Open Result Music Folder", + "description": "Manage result music files and enable random playback" }, "animation_music_volume": { - "name": "动画音乐音量", - "description": "设置动画音乐的音量" + "name": "Animation Music Volume", + "description": "Set the volume for animation music" }, "result_music_volume": { - "name": "结果音乐音量", - "description": "设置结果音乐的音量" + "name": "Result Music Volume", + "description": "Set the volume for result music" }, "animation_music_fade_in": { - "name": "动画音乐淡入时间", - "description": "设置动画音乐淡入的时间" + "name": "Animation Music Fade-In Time", + "description": "Set the fade-in time for animation music" }, "result_music_fade_in": { - "name": "结果音乐淡入时间", - "description": "设置结果音乐淡入的时间" + "name": "Result Music Fade-In Time", + "description": "Set the fade-in time for result music" }, "animation_music_fade_out": { - "name": "动画音乐淡出时间", - "description": "设置动画音乐淡出的时间" + "name": "Animation Music Fade-Out Time", + "description": "Set the fade-out time for animation music" }, "result_music_fade_out": { - "name": "结果音乐淡出时间", - "description": "设置结果音乐淡出的时间" + "name": "Result Music Fade-Out Time", + "description": "Set the fade-out time for result music" } }, "instant_draw_settings": { "title": { - "name": "即抽设置", - "description": "即时抽取功能的相关设置" + "name": "Instant Draw Settings", + "description": "Settings related to instant draw functionality" }, "extraction_function": { - "name": "抽取功能", - "description": "即抽抽取功能相关设置" + "name": "Extraction Functions", + "description": "Settings related to instant draw extraction features" }, "display_settings": { - "name": "显示设置", - "description": "即抽结果显示相关设置" + "name": "Display Settings", + "description": "Settings for how instant draw results are displayed" }, "basic_animation_settings": { - "name": "动画设置", - "description": "即抽动画效果相关设置" + "name": "Animation Settings", + "description": "Settings related to instant draw animation effects" }, "color_theme_settings": { - "name": "颜色主题设置", - "description": "即抽结果显示的颜色主题相关设置" + "name": "Color Theme Settings", + "description": "Color theme settings for instant draw results display" }, "student_image_settings": { - "name": "学生头像设置", - "description": "即抽结果显示的学生头像相关设置" + "name": "Student Avatar Settings", + "description": "Settings for student avatars in instant draw results display" }, "music_settings": { - "name": "音乐设置", - "description": "即抽音乐相关设置" + "name": "Music Settings", + "description": "Settings related to instant draw music" }, "draw_mode": { - "name": "抽取模式", - "description": "设置即抽抽取的模式", + "name": "Draw Mode", + "description": "Set the draw mode for instant draw", "combo_items": [ - "重复抽取", - "不重复抽取", - "半重复抽取" + "Allow Repeats", + "No Repeats", + "Partial Repeats" ] }, "clear_record": { - "name": "清除抽取记录方式", - "description": "设置清除即抽抽取记录的方式", + "name": "Clear Record Mode", + "description": "Set how instant draw extraction records are cleared", "combo_items": [ - "重启后清除", - "直到全部抽取完" + "Clear After Restart", + "Until All Selected" ], "combo_items_other": [ - "重启后清除", - "直到全部抽取完", - "无需清除" + "Clear After Restart", + "Until All Selected", + "Never Clear" ] }, "half_repeat": { - "name": "半重复抽取次数", - "description": "设置半重复抽取的次数" + "name": "Partial Repeat Count", + "description": "Set the number of partial repeats" }, "clear_time": { - "name": "抽取后定时清除时间", - "description": "设置抽取后定时清除记录的时间(秒)" + "name": "Timed Clear After Extraction", + "description": "Set the time (seconds) after which extraction records are cleared" }, "draw_type": { - "name": "抽取方式", - "description": "设置即抽抽取的方式", + "name": "Draw Type", + "description": "Set the draw type for instant draw", "combo_items": [ - "随机抽取", - "公平抽取" + "Random Draw", + "Fair Draw" ] }, "font_size": { - "name": "字体大小", - "description": "设置即抽结果显示的字体大小" + "name": "Font Size", + "description": "Set the font size for instant draw results display" }, "display_format": { - "name": "结果显示格式", - "description": "设置即抽结果的显示格式", + "name": "Result Display Format", + "description": "Set the format for displaying instant draw results", "combo_items": [ - "学号+姓名", - "姓名", - "学号" + "Student ID + Name", + "Name", + "Student ID" ] }, "show_random": { - "name": "显示随机组员格式", - "description": "设置随机组员的显示格式", + "name": "Show Random Group Member Format", + "description": "Set how random group members are shown", "combo_items": [ - "不显示", - "组名[换行]姓名", - "组名[短横杠]姓名" + "Don't show", + "GroupName[Newline]Name", + "GroupName[-]Name" ] }, "animation": { - "name": "动画模式", - "description": "设置即抽抽取的动画效果", + "name": "Animation Mode", + "description": "Set the animation effect for instant draw", "combo_items": [ - "手动停止动画", - "自动播放动画", - "直接显示结果" + "Manual Stop Animation", + "Auto Play Animation", + "Show Result Immediately" ] }, "animation_interval": { - "name": "动画间隔", - "description": "设置即抽动画的间隔时间(毫秒)" + "name": "Animation Interval", + "description": "Set the interval for instant draw animation (ms)" }, "autoplay_count": { - "name": "自动播放次数", - "description": "设置即抽动画自动播放的次数" + "name": "Autoplay Count", + "description": "Set how many times the instant draw animation auto-plays" }, "animation_color_theme": { - "name": "动画颜色主题", - "description": "设置即抽动画的颜色主题", + "name": "Animation Color Theme", + "description": "Set the color theme for instant draw animation", "combo_items": [ - "关闭", - "随机颜色", - "固定颜色" + "Off", + "Random Colors", + "Fixed Color" ] }, "result_color_theme": { - "name": "结果颜色主题", - "description": "设置即抽结果显示的颜色主题", + "name": "Result Color Theme", + "description": "Set the color theme for instant draw result display", "combo_items": [ - "关闭", - "随机颜色", - "固定颜色" + "Off", + "Random Colors", + "Fixed Color" ] }, "animation_fixed_color": { - "name": "动画固定颜色", - "description": "设置即抽动画的固定颜色" + "name": "Animation Fixed Color", + "description": "Set the fixed color used during instant draw animations" }, "result_fixed_color": { - "name": "结果固定颜色", - "description": "设置即抽结果显示的固定颜色" + "name": "Result Fixed Color", + "description": "Set the fixed color used for instant draw results display" }, "student_image": { - "name": "显示学生图片", - "description": "设置是否显示学生图片", + "name": "Show Student Images", + "description": "Set whether to show student images", "switchbutton_name": { - "enable": "显示", - "disable": "隐藏" + "enable": "Show", + "disable": "Hide" } }, "open_student_image_folder": { - "name": "学生图片文件夹", - "description": "管理学生图片文件,图片文件名需与学生姓名一致" + "name": "Student Image Folder", + "description": "Manage student image files; image filenames must match student names" }, "animation_music": { - "name": "动画音乐", - "description": "设置是否播放动画音乐", + "name": "Animation Music", + "description": "Set whether to play animation music", "switchbutton_name": { - "enable": "播放", - "disable": "关闭" + "enable": "Play", + "disable": "Off" } }, "result_music": { - "name": "结果音乐", - "description": "设置是否播放结果音乐", + "name": "Result Music", + "description": "Set whether to play result music", "switchbutton_name": { - "enable": "播放", - "disable": "关闭" + "enable": "Play", + "disable": "Off" } }, "open_animation_music_folder": { - "name": "打开动画音乐文件夹", - "description": "管理动画音乐文件并支持随机播放功能" + "name": "Open Animation Music Folder", + "description": "Manage animation music files and enable random playback" }, "open_result_music_folder": { - "name": "打开结果音乐文件夹", - "description": "管理结果音乐文件并支持随机播放功能" + "name": "Open Result Music Folder", + "description": "Manage result music files and enable random playback" }, "animation_music_volume": { - "name": "动画音乐音量", - "description": "设置动画音乐的音量" + "name": "Animation Music Volume", + "description": "Set the volume for animation music" }, "result_music_volume": { - "name": "结果音乐音量", - "description": "设置结果音乐的音量" + "name": "Result Music Volume", + "description": "Set the volume for result music" }, "animation_music_fade_in": { - "name": "动画音乐淡入时间", - "description": "设置动画音乐淡入的时间" + "name": "Animation Music Fade-In Time", + "description": "Set the fade-in time for animation music" }, "result_music_fade_in": { - "name": "结果音乐淡入时间", - "description": "设置结果音乐淡入的时间" + "name": "Result Music Fade-In Time", + "description": "Set the fade-in time for result music" }, "animation_music_fade_out": { - "name": "动画音乐淡出时间", - "description": "设置动画音乐淡出的时间" + "name": "Animation Music Fade-Out Time", + "description": "Set the fade-out time for animation music" }, "result_music_fade_out": { - "name": "结果音乐淡出时间", - "description": "设置结果音乐淡出的时间" + "name": "Result Music Fade-Out Time", + "description": "Set the fade-out time for result music" } }, "custom_draw_settings": { "title": { - "name": "自定义抽设置", - "description": "自定义抽设置" + "name": "Custom Draw Settings", + "description": "Settings for custom draws" } }, "lottery_settings": { "title": { - "name": "抽奖设置", - "description": "抽奖设置" + "name": "Lottery Settings", + "description": "Settings for lottery/prize draws" }, "extraction_function": { - "name": "抽取功能", - "description": "抽奖抽取功能相关设置" + "name": "Extraction Functions", + "description": "Settings related to lottery extraction features" }, "display_settings": { - "name": "显示设置", - "description": "抽奖结果显示相关设置" + "name": "Display Settings", + "description": "Settings for how lottery results are displayed" }, "basic_animation_settings": { - "name": "动画设置", - "description": "抽奖动画效果相关设置" + "name": "Animation Settings", + "description": "Settings related to lottery animation effects" }, "color_theme_settings": { - "name": "颜色主题设置", - "description": "抽奖结果显示的颜色主题相关设置" + "name": "Color Theme Settings", + "description": "Color theme settings for lottery results display" }, "student_image_settings": { - "name": "奖品图片设置", - "description": "抽奖结果显示的奖品图片相关设置" + "name": "Prize Image Settings", + "description": "Settings for prize images in lottery results display" }, "music_settings": { - "name": "音乐设置", - "description": "抽奖音乐相关设置" + "name": "Music Settings", + "description": "Settings related to lottery music" }, "draw_mode": { - "name": "抽取模式", - "description": "设置抽奖抽取的模式", + "name": "Draw Mode", + "description": "Set the draw mode for lotteries", "combo_items": [ - "重复抽取", - "不重复抽取", - "半重复抽取" + "Allow Repeats", + "No Repeats", + "Partial Repeats" ] }, "clear_record": { - "name": "清除抽取记录方式", - "description": "设置清除抽奖抽取记录的方式", + "name": "Clear Record Mode", + "description": "Set how lottery extraction records are cleared", "combo_items": [ - "重启后清除", - "直到全部抽取完" + "Clear After Restart", + "Until All Selected" ], "combo_items_other": [ - "重启后清除", - "直到全部抽取完", - "无需清除" + "Clear After Restart", + "Until All Selected", + "Never Clear" ] }, "half_repeat": { - "name": "半重复抽取次数", - "description": "设置半重复抽取的次数" + "name": "Partial Repeat Count", + "description": "Set the number of partial repeats" }, "clear_time": { - "name": "抽取后定时清除时间", - "description": "设置抽取后定时清除记录的时间(秒)" + "name": "Timed Clear After Extraction", + "description": "Set the time (seconds) after which extraction records are cleared" }, "draw_type": { - "name": "抽取方式", - "description": "设置抽奖抽取的方式", + "name": "Draw Type", + "description": "Set the draw type for lotteries", "combo_items": [ - "随机抽取", - "公平抽取" + "Random Draw", + "Fair Draw" ] }, "font_size": { - "name": "字体大小", - "description": "设置抽奖结果显示的字体大小" + "name": "Font Size", + "description": "Set the font size for lottery results display" }, "display_format": { - "name": "结果显示格式", - "description": "设置抽奖结果的显示格式", + "name": "Result Display Format", + "description": "Set the format for displaying lottery results", "combo_items": [ - "序号+名称", - "名称", - "序号" + "Index + Name", + "Name", + "Index" ] }, "animation": { - "name": "动画模式", - "description": "设置抽奖抽取的动画效果", + "name": "Animation Mode", + "description": "Set the animation effect for lottery draws", "combo_items": [ - "手动停止动画", - "自动播放动画", - "直接显示结果" + "Manual Stop Animation", + "Auto Play Animation", + "Show Result Immediately" ] }, "animation_interval": { - "name": "动画间隔", - "description": "设置抽奖动画的间隔时间(毫秒)" + "name": "Animation Interval", + "description": "Set the interval for lottery animation (ms)" }, "autoplay_count": { - "name": "自动播放次数", - "description": "设置抽奖动画自动播放的次数" + "name": "Autoplay Count", + "description": "Set how many times the lottery animation auto-plays" }, "animation_color_theme": { - "name": "动画颜色主题", - "description": "设置抽奖动画的颜色主题", + "name": "Animation Color Theme", + "description": "Set the color theme for lottery animation", "combo_items": [ - "关闭", - "随机颜色", - "固定颜色" + "Off", + "Random Colors", + "Fixed Color" ] }, "result_color_theme": { - "name": "结果颜色主题", - "description": "设置抽奖结果显示的颜色主题", + "name": "Result Color Theme", + "description": "Set the color theme for lottery result display", "combo_items": [ - "关闭", - "随机颜色", - "固定颜色" + "Off", + "Random Colors", + "Fixed Color" ] }, "animation_fixed_color": { - "name": "动画固定颜色", - "description": "设置抽奖动画的固定颜色" + "name": "Animation Fixed Color", + "description": "Set the fixed color used during lottery animations" }, "result_fixed_color": { - "name": "结果固定颜色", - "description": "设置抽奖结果显示的固定颜色" + "name": "Result Fixed Color", + "description": "Set the fixed color used for lottery results display" }, "lottery_image": { - "name": "显示学生图片", - "description": "设置是否显示学生图片", + "name": "Show Item Images", + "description": "Set whether to show images for items/prizes", "switchbutton_name": { - "enable": "显示", - "disable": "隐藏" + "enable": "Show", + "disable": "Hide" } }, "open_lottery_image_folder": { - "name": "奖品图片文件夹", - "description": "管理奖品图片文件,图片文件名需与奖品名称一致" + "name": "Prize Image Folder", + "description": "Manage prize image files; image filenames must match prize names" }, "animation_music": { - "name": "动画音乐", - "description": "设置是否播放动画音乐", + "name": "Animation Music", + "description": "Set whether to play animation music", "switchbutton_name": { - "enable": "播放", - "disable": "关闭" + "enable": "Play", + "disable": "Off" } }, "result_music": { - "name": "结果音乐", - "description": "设置是否播放结果音乐", + "name": "Result Music", + "description": "Set whether to play result music", "switchbutton_name": { - "enable": "播放", - "disable": "关闭" + "enable": "Play", + "disable": "Off" } }, "open_animation_music_folder": { - "name": "打开动画音乐文件夹", - "description": "管理动画音乐文件并支持随机播放功能" + "name": "Open Animation Music Folder", + "description": "Manage animation music files and enable random playback" }, "open_result_music_folder": { - "name": "打开结果音乐文件夹", - "description": "管理结果音乐文件并支持随机播放功能" + "name": "Open Result Music Folder", + "description": "Manage result music files and enable random playback" }, "animation_music_volume": { - "name": "动画音乐音量", - "description": "设置动画音乐的音量" + "name": "Animation Music Volume", + "description": "Set the volume for animation music" }, "result_music_volume": { - "name": "结果音乐音量", - "description": "设置结果音乐的音量" + "name": "Result Music Volume", + "description": "Set the volume for result music" }, "animation_music_fade_in": { - "name": "动画音乐淡入时间", - "description": "设置动画音乐淡入的时间" + "name": "Animation Music Fade-In Time", + "description": "Set the fade-in time for animation music" }, "result_music_fade_in": { - "name": "结果音乐淡入时间", - "description": "设置结果音乐淡入的时间" + "name": "Result Music Fade-In Time", + "description": "Set the fade-in time for result music" }, "animation_music_fade_out": { - "name": "动画音乐淡出时间", - "description": "设置动画音乐淡出的时间" + "name": "Animation Music Fade-Out Time", + "description": "Set the fade-out time for animation music" }, "result_music_fade_out": { - "name": "结果音乐淡出时间", - "description": "设置结果音乐淡出的时间" + "name": "Result Music Fade-Out Time", + "description": "Set the fade-out time for result music" } }, "safety_settings": { "title": { - "name": "安全设置", - "description": "安全设置" + "name": "Safety Settings", + "description": "Safety and security related settings" } }, "basic_safety_settings": { "title": { - "name": "基础安全设置", - "description": "基础安全设置" + "name": "Basic Safety Settings", + "description": "Basic safety settings" }, "verification_method": { - "name": "验证方式", - "description": "设置安全功能的验证方式" + "name": "Verification Method", + "description": "Set the verification method for security features" }, "verification_process": { - "name": "安全验证步骤", - "description": "设置安全功能的验证步骤", - "combo_items": [ - "单步验证(任选一种方式)", - "仅 密码", - "仅 TOTP", - "仅 U盘解锁", - "密码 + TOTP", - "密码 + U盘解锁", - "TOTP + U盘解锁", - "密码 + TOTP + U盘解锁" - ] - }, - "security_operations": { - "name": "安全操作", - "description": "设置安全操作的验证方式" - }, - "safety_switch": { - "name": "安全开关", - "description": "开启后,所有带有安全操作的功能都需要验证密码", - "switchbutton_name": { - "enable": "启用", - "disable": "禁用" - } - }, - "set_password": { - "name": "设置/修改密码", - "description": "设置或修改安全密码" - }, - "totp_switch": { - "name": "是否开启TOTP开关", - "description": "开启后,将可以在安全操作中使用TOTP", - "switchbutton_name": { - "enable": "启用", - "disable": "禁用" - } - }, - "set_totp": { - "name": "设置TOTP", - "description": "设置TOTP" - }, - "usb_switch": { - "name": "是否开启U盘开关", - "description": "开启后,将可以在安全操作中使用U盘解锁", - "switchbutton_name": { - "enable": "启用", - "disable": "禁用" - } - }, - "bind_usb": { - "name": "绑定U盘", - "description": "绑定U盘解锁" - }, - "unbind_usb": { - "name": "解绑U盘", - "description": "解绑U盘解锁" - }, - "show_hide_floating_window_switch": { - "name": "显示/隐藏操作是否需安全验证", - "description": "开启后可在安全操作中显示/隐藏悬浮窗,需安全验证", - "switchbutton_name": { - "enable": "启用", - "disable": "禁用" - } - }, - "restart_switch": { - "name": "重启操作是否需安全验证", - "description": "开启后重启软件,需安全验证", - "switchbutton_name": { - "enable": "启用", - "disable": "禁用" - } - }, - "exit_switch": { - "name": "退出操作是否需安全验证", - "description": "开启后退出软件,需安全验证", - "switchbutton_name": { - "enable": "启用", - "disable": "禁用" - } - } - }, - "advanced_safety_settings": { - "title": { - "name": "进阶安全设置", - "description": "进阶安全设置" - }, - "strong_protection": { - "name": "强力防删除设置", - "description": "强力防删除功能设置" - }, - "data_encryption": { - "name": "数据加密设置", - "description": "数据加密功能设置" - }, - "encryption_strong_switch": { - "name": "软件主程序自我保护", - "description": "开启后软件主程序将启用自我保护功能", - "switchbutton_name": { - "enable": "启用", - "disable": "禁用" - } - }, - "encryption_strong_mode": { - "name": "保护强度模式", - "description": "选择软件自我保护强度模式", - "combo_items": [ - "仅软件目录备份", - "软件目录+系统缓存目录备份" - ] - }, - "encryption_list_switch": { - "name": "加密名单文件", - "description": "开启后软件将加密名单文件", - "switchbutton_name": { - "enable": "启用", - "disable": "禁用" - } - }, - "encryption_history_switch": { - "name": "加密历史记录", - "description": "开启后软件将加密历史记录", - "switchbutton_name": { - "enable": "启用", - "disable": "禁用" - } - }, - "encryption_temp_switch": { - "name": "加密临时记录", - "description": "开启后软件将加密临时已抽取记录", - "switchbutton_name": { - "enable": "启用", - "disable": "禁用" - } - } - }, - "custom_settings": { - "title": { - "name": "个性设置", - "description": "个性设置" - } - }, - "page_management": { - "title": { - "name": "页面管理", - "description": "页面管理设置" - }, - "roll_call": { - "name": "点名设置", - "description": "点名设置" - }, - "lottery": { - "name": "抽奖设置", - "description": "抽奖设置" - }, - "roll_call_method": { - "name": "点名控制面板位置", - "description": "配置点名控制面板位置", - "combo_items": [ - "左侧", - "右侧", - "左侧底部", - "右侧底部" - ] - }, - "show_name": { - "name": "名称设置按钮", - "description": "开启后软件将显示名称设置按钮", - "switchbutton_name": { - "enable": "显示", - "disable": "隐藏" - } - }, - "reset_roll_call": { - "name": "重置点名按钮", - "description": "开启后软件将显示重置点名按钮", - "switchbutton_name": { - "enable": "显示", - "disable": "隐藏" - } - }, - "roll_call_quantity_control": { - "name": "增加/减少抽取数量控制条", - "description": "开启后软件将显示增加/减少抽取数量控制条", - "switchbutton_name": { - "enable": "显示", - "disable": "隐藏" - } - }, - "roll_call_start_button": { - "name": "开始按钮", - "description": "开启后软件将显示开始按钮", - "switchbutton_name": { - "enable": "显示", - "disable": "隐藏" - } - }, - "roll_call_list": { - "name": "点名名单切换下拉框", - "description": "开启后软件将显示点名名单切换下拉框", - "switchbutton_name": { - "enable": "显示", - "disable": "隐藏" - } - }, - "roll_call_range": { - "name": "点名范围下拉框", - "description": "开启后软件将显示点名范围", - "switchbutton_name": { - "enable": "显示", - "disable": "隐藏" - } - }, - "roll_call_gender": { - "name": "点名性别范围下拉框", - "description": "开启后软件将显示点名性别范围下拉框", - "switchbutton_name": { - "enable": "显示", - "disable": "隐藏" - } - }, - "roll_call_quantity_label": { - "name": "数量标签", - "description": "开启后软件将显示人数/组数数量标签", - "switchbutton_name": { - "enable": "显示", - "disable": "隐藏" - } - }, - "lottery_method": { - "name": "抽奖控制面板位置", - "description": "配置抽奖控制面板位置", - "combo_items": [ - "左侧", - "右侧", - "左侧底部", - "右侧底部" - ] - }, - "show_lottery_name": { - "name": "名称设置按钮", - "description": "开启后软件将显示名称设置按钮", - "switchbutton_name": { - "enable": "显示", - "disable": "隐藏" - } - }, - "reset_lottery": { - "name": "重置抽奖按钮", - "description": "开启后软件将显示重置抽奖按钮", - "switchbutton_name": { - "enable": "显示", - "disable": "隐藏" - } - }, - "lottery_quantity_control": { - "name": "增加/减少抽取数量控制条", - "description": "开启后软件将显示增加/减少抽取数量控制条", - "switchbutton_name": { - "enable": "显示", - "disable": "隐藏" - } - }, - "lottery_start_button": { - "name": "开始按钮", - "description": "开启后软件将显示开始按钮", - "switchbutton_name": { - "enable": "显示", - "disable": "隐藏" - } - }, - "lottery_list": { - "name": "抽奖名单切换下拉框", - "description": "开启后软件将显示抽奖名单切换下拉框", - "switchbutton_name": { - "enable": "显示", - "disable": "隐藏" - } - }, - "lottery_quantity_label": { - "name": "数量标签", - "description": "开启后软件将显示奖数标签", - "switchbutton_name": { - "enable": "显示", - "disable": "隐藏" - } - } - }, - "floating_window_management": { - "title": { - "name": "浮窗管理", - "description": "配置浮窗管理相关设置" - }, - "basic_settings": { - "name": "基本设置", - "description": "配置浮窗管理基本设置" - }, - "appearance_settings": { - "name": "外观设置", - "description": "配置浮窗管理外观设置" - }, - "edge_settings": { - "name": "贴边设置", - "description": "配置浮窗管理贴边设置" - }, - "startup_display_floating_window": { - "name": "软件启动时显示浮窗", - "description": "配置软件启动时是否显示浮窗", - "switchbutton_name": { - "enable": "显示", - "disable": "隐藏" - } - }, - "floating_window_opacity": { - "name": "浮窗透明度", - "description": "配置浮窗透明度" - }, - "reset_floating_window_position_button": { - "name": "重置浮窗位置按钮", - "description": "点击后将浮窗位置重置为默认位置", - "pushbutton_name": "重置位置" - }, - "floating_window_button_control": { - "name": "浮窗控件配置", - "description": "配置浮窗中显示的按钮", - "combo_items": [ - "显示 拖动", - "显示 主界面", - "显示 闪抽", - "显示 拖动+主界面", - "显示 主界面+闪抽", - "显示 拖动+闪抽", - "显示 拖动+主界面+闪抽", - "显示 即抽" - ] - }, - "floating_window_placement": { - "name": "浮窗排列", - "description": "配置浮窗控件排列", - "combo_items": [ - "矩形排列", - "竖向排列", - "横向排列" - ] - }, - "floating_window_display_style": { - "name": "浮窗显示样式", - "description": "配置浮窗控件显示样式", - "combo_items": [ - "图标+文字", - "图标", - "文字" - ] - }, - "floating_window_stick_to_edge": { - "name": "贴边设置", - "description": "配置浮窗是否贴边", - "switchbutton_name": { - "enable": "贴边", - "disable": "不贴边" - } - }, - "floating_window_stick_to_edge_recover_seconds": { - "name": "贴边收纳时间", - "description": "配置浮窗贴边后收纳时间" - }, - "floating_window_stick_to_edge_display_style": { - "name": "贴边显示样式", - "description": "配置浮窗贴边后显示样式", - "combo_items": [ - "图标", - "文字", - "箭头" - ] - } - }, - "sidebar_tray_management": { - "title": { - "name": "侧边栏/托盘管理", - "description": "配置侧边栏/托盘管理相关设置" - } - }, - "sidebar_management_window": { - "title": { - "name": "主界面侧边栏", - "description": "配置主界面侧边栏管理相关设置" - }, - "roll_call_sidebar_position": { - "name": "点名侧边栏位置", - "description": "配置点名侧边栏位置", - "combo_items": [ - "顶部", - "底部", - "不显示" - ] - }, - "custom_roll_call_sidebar_position": { - "name": "自定义抽侧边栏位置", - "description": "配置自定义抽侧边栏位置", - "combo_items": [ - "顶部", - "底部", - "不显示" - ] - }, - "lottery_sidebar_position": { - "name": "抽奖侧边栏位置", - "description": "配置抽奖侧边栏位置", - "combo_items": [ - "顶部", - "底部", - "不显示" - ] - }, - "main_window_history": { - "name": "主窗口历史记录位置", - "description": "配置主窗口历史记录位置", - "combo_items": [ - "顶部", - "底部", - "不显示" - ] - }, - "settings_icon": { - "name": "设置图标位置", - "description": "配置侧边栏管理设置图标位置", - "combo_items": [ - "顶部", - "底部", - "不显示" - ] - } - }, - "sidebar_management_settings": { - "title": { - "name": "设置窗口侧边栏", - "description": "配置设置窗口侧边栏管理设置" - }, - "home": { - "name": "首页位置", - "description": "配置侧边栏管理首页位置", - "combo_items": [ - "顶部", - "底部", - "不显示" - ] - }, - "base_settings": { - "name": "基础设置", - "description": "配置基础设置", - "combo_items": [ - "顶部", - "底部", - "不显示" - ] - }, - "name_management": { - "name": "名单管理", - "description": "配置名单管理", - "combo_items": [ - "顶部", - "底部", - "不显示" - ] - }, - "draw_settings": { - "name": "抽取设置", - "description": "配置抽取设置", - "combo_items": [ - "顶部", - "底部", - "不显示" - ] - }, - "notification_service": { - "name": "通知服务", - "description": "配置通知服务", - "combo_items": [ - "顶部", - "底部", - "不显示" - ] - }, - "security_settings": { - "name": "安全设置", - "description": "配置安全设置", - "combo_items": [ - "顶部", - "底部", - "不显示" - ] - }, - "personal_settings": { - "name": "个性设置", - "description": "配置个性设置", - "combo_items": [ - "顶部", - "底部", - "不显示" - ] - }, - "voice_settings": { - "name": "语音设置", - "description": "配置语音设置", - "combo_items": [ - "顶部", - "底部", - "不显示" - ] - }, - "settings_history": { - "name": "设置界面历史记录", - "description": "配置设置界面历史记录", - "combo_items": [ - "顶部", - "底部", - "不显示" - ] - }, - "more_settings": { - "name": "更多设置", - "description": "配置更多设置", - "combo_items": [ - "顶部", - "底部", - "不显示" - ] - } - }, - "tray_management": { - "title": { - "name": "托盘管理", - "description": "配置托盘管理相关设置" - }, - "show_hide_main_window": { - "name": "暂时显示/隐藏主界面", - "description": "配置暂时显示/隐藏主界面", - "switchbutton_name": { - "enable": "显示", - "disable": "隐藏" - } - }, - "open_settings": { - "name": "打开设置窗口", - "description": "配置打开设置窗口", - "switchbutton_name": { - "enable": "显示", - "disable": "隐藏" - } - }, - "show_hide_float_window": { - "name": "暂时显示/隐藏浮窗", - "description": "配置暂时显示/隐藏浮窗", - "switchbutton_name": { - "enable": "显示", - "disable": "隐藏" - } - }, - "restart": { - "name": "重启应用", - "description": "配置重启应用", - "switchbutton_name": { - "enable": "重启", - "disable": "不重启" - } - }, - "exit": { - "name": "退出应用", - "description": "配置退出应用", - "switchbutton_name": { - "enable": "退出", - "disable": "不退出" - } - } - }, - "voice_settings": { - "title": { - "name": "语音设置", - "description": "语音设置页面" - } - }, - "basic_voice_settings": { - "title": { - "name": "基本语音设置", - "description": "基本语音设置" - }, - "voice_engine_group": { - "name": "语音引擎", - "description": "选择语音合成引擎" - }, - "volume_group": { - "name": "音量设置", - "description": "设置语音播放的音量大小" - }, - "system_volume_group": { - "name": "系统音量控制", - "description": "选择要控制的系统音量类型" - }, - "voice_engine": { - "name": "语音引擎", - "description": "选择语音合成引擎", - "combo_items": ["系统TTS", "Edge TTS"] - }, - "edge_tts_voice_name": { - "name": "Edge TTS-语音名称", - "description": "选择Edge TTS语音", - "combo_items": [ - "zh-CN-XiaoxiaoNeural", - "zh-CN-YunxiNeural", - "zh-CN-XiaoyiNeural", - "en-US-JennyNeural", - "en-US-GuyNeural" - ] - }, - "voice_playback": { - "name": "语音播放", - "description": "选择语音播放设备", - "combo_items": [ - "系统默认", "扬声器", "耳机", "蓝牙设备" - ] - }, - "volume_size": { - "name": "音量大小", - "description": "设置语音播放的音量大小" - }, - "speech_rate": { - "name": "语速调节", - "description": "设置语音播放的语速" - }, - "system_volume_control": { - "name": "系统音量控制", - "description": "选择要控制的系统音量类型", - "combo_items": [ - "主音量", "应用音量", "系统音效", "麦克风音量" - ] - }, - "system_volume_size": { - "name": "系统音量大小", - "description": "设置系统音量大小" - } - }, - "more_settings": { - "title": { - "name": "更多设置", - "description": "更多设置" - } - }, - "debug":{ - "title": { - "name": "调试设置", - "description": "调试设置" - } - }, - "about": { - "title": { - "name": "关于", - "description": "软件关于页面" - }, - "github": { - "name": "Github", - "description": "访问项目仓库" - }, - "bilibili": { - "name": "Bilibili", - "description": "访问 黎泽懿_Aionflux 的 Bilibili 账号" - }, - "contributor": { - "name": "贡献人员", - "description": "点击查看详细贡献者信息", - "contributor_role_1": "设计 & 创意 & 策划 &\n维护 & 文档& 测试", - "contributor_role_2": "创意 & 维护", - "contributor_role_3": "应用测试 & 文档 & 安装包制作", - "contributor_role_4": "响应式前端页面\n设计及维护 & 文档", - "contributor_role_5": "创意 & 文档", - "contributor_role_6": "响应式前端页面\n设计及维护 & 文档" - }, - "donation": { - "name": "捐赠支持", - "description": "支持项目发展,感谢您的捐赠" - }, - "check_update": { - "name": "检查更新", - "description": "检查当前是否为最新版本" - }, - "website": { - "name": "SecRandom 官网", - "description": "访问 SecRandom 软件官网" - }, - "channel": { - "name": "更新通道", - "description": "选择 SecRandom 软件更新通道", - "combo_items": [ - "正式版本", - "测试版本" - ] - }, - "copyright": { - "name": "版权", - "description": "SecRandom 遵循 GPL-3.0 协议" - }, - "version": { - "name": "版本", - "description": "显示当前软件版本号" + "name": "Verification Process", + "description": "Security verification steps" } } } From aec2ded276204d72dfc41160ead2d6fad7667d67 Mon Sep 17 00:00:00 2001 From: jimmy-sketch Date: Sat, 1 Nov 2025 22:21:34 +0800 Subject: [PATCH 06/27] =?UTF-8?q?fix:=20=E4=BC=98=E5=8C=96"=E5=90=8D?= =?UTF-8?q?=E5=8D=95=E7=AE=A1=E7=90=86=E2=80=9C=E7=95=8C=E9=9D=A2=E7=9A=84?= =?UTF-8?q?=E6=96=87=E6=9C=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 将”名单管理“界面中的按钮的文字独立出来 --- app/Language/modules/basic_settings.py | 6 +- app/Language/modules/list_management.py | 76 +++++++-- app/view/main/roll_call.py | 5 +- .../settings/list_management/lottery_list.py | 141 ++++++++++------ .../list_management/roll_call_list.py | 153 ++++++++++++------ 5 files changed, 260 insertions(+), 121 deletions(-) diff --git a/app/Language/modules/basic_settings.py b/app/Language/modules/basic_settings.py index 5a8999e5..09a3fea7 100644 --- a/app/Language/modules/basic_settings.py +++ b/app/Language/modules/basic_settings.py @@ -23,12 +23,12 @@ "export_diagnostic_data": { "name": "导出诊断数据", "description": "导出诊断数据", - "pushbutton_name": "导出", + "pushbutton_name": "点击以导出", }, "export_settings": { "name": "导出设置", "description": "导出设置到文件", - "pushbutton_name": "导出", + "pushbutton_name": "点击以导出", }, "import_settings": { "name": "导入设置", @@ -38,7 +38,7 @@ "export_all_data": { "name": "导出所有数据", "description": "导出所有数据", - "pushbutton_name": "导出", + "pushbutton_name": "点击以导出", }, "import_all_data": { "name": "导入所有数据", diff --git a/app/Language/modules/list_management.py b/app/Language/modules/list_management.py index a4b99e7e..5bd285b0 100644 --- a/app/Language/modules/list_management.py +++ b/app/Language/modules/list_management.py @@ -7,20 +7,47 @@ roll_call_list = { "ZH_CN": { "title": {"name": "点名名单", "description": "点名名单"}, - "set_class_name": {"name": "设置班级名称", "description": "设置班级名称"}, + "set_class_name": { + "name": "设置班级名称", + "description": "设置每个班级的名称", + "pushbutton_name": "点击以设置", + }, "select_class_name": {"name": "选择班级", "description": "选择班级"}, - "import_student_name": {"name": "导入学生名单", "description": "导入学生名单"}, - "name_setting": {"name": "设置姓名", "description": "设置姓名"}, - "gender_setting": {"name": "设置性别", "description": "设置性别"}, - "group_setting": {"name": "设置班级", "description": "设置班级"}, - "export_student_name": {"name": "导出学生名单", "description": "导出学生名单"}, + "import_student_name": { + "name": "导入学生名单", + "description": "导入学生名单", + "pushbutton_name": "选择名单文件", + }, + "name_setting": { + "name": "设置姓名", + "description": "设置班级中每一位学生的姓名", + "pushbutton_name": "点击以设置", + }, + "gender_setting": { + "name": "设置性别", + "description": "设置班级中每一位学生的性别", + "pushbutton_name": "点击以设置", + }, + "group_setting": { + "name": "设置小组名称", + "description": "设置班级中学生们的分组", + "pushbutton_name": "点击以设置", + }, + "export_student_name": { + "name": "导出学生名单", + "description": "导出学生名单", + "pushbutton_name": "导出", + }, } } # 点名表格语言配置 roll_call_table = { "ZH_CN": { - "title": {"name": "点名表格", "description": "用于展示和管理点名名单的表格"}, + "title": { + "name": "点名表格", + "description": "用于展示和管理特定班级点名名单的表格", + }, "select_class_name": { "name": "选择班级", "description": "选择要显示点名表格的班级", @@ -36,12 +63,35 @@ lottery_list = { "ZH_CN": { "title": {"name": "抽奖名单", "description": "抽奖名单"}, - "set_pool_name": {"name": "设置奖池名称", "description": "设置奖池名称"}, - "select_pool_name": {"name": "选择奖池 ", "description": "选择奖池"}, - "import_prize_name": {"name": "导入奖品名单", "description": "导入奖品名单"}, - "prize_setting": {"name": "设置奖品", "description": "设置奖品"}, - "prize_weight_setting": {"name": "设置权重", "description": "设置权重"}, - "export_prize_name": {"name": "导出奖品名单", "description": "导出奖品名单"}, + "set_pool_name": { + "name": "设置奖池名称", + "description": "设置奖池名称", + "pushbutton_name": "点击以设置", + }, + "select_pool_name": { + "name": "选择奖池 ", + "description": "选择奖池", + }, + "import_prize_name": { + "name": "导入奖品名单", + "description": "导入奖池中的奖品的名单", + "pushbutton_name": "选择奖品名单文件" + }, + "prize_setting": { + "name": "设置奖品", + "description": "设置奖池中的奖品", + "pushbutton_name":"点击以设置" + }, + "prize_weight_setting": { + "name": "设置权重", + "description": "设置每个奖品的抽取权重", + "pushbutton_name":"点击以设置" + }, + "export_prize_name": { + "name": "导出奖品名单", + "description": "导出奖品名单", + "pushbutton_name": "点击以导出" + }, } } diff --git a/app/view/main/roll_call.py b/app/view/main/roll_call.py index a2e74aa4..34f7064e 100644 --- a/app/view/main/roll_call.py +++ b/app/view/main/roll_call.py @@ -29,10 +29,11 @@ def __init__(self): self.initUI() def initUI(self): - + pass def stary_draw(self): """绘制点名界面""" self.setWindowTitle(get_content_name_async("roll_call", "title")) self.setWindowIcon(get_theme_icon("ic_fluent_people_20_filled")) self.setGeometry(100, 100, 800, 600) - self.show() \ No newline at end of file + self.show() + pass \ No newline at end of file diff --git a/app/view/settings/list_management/lottery_list.py b/app/view/settings/list_management/lottery_list.py index 63691e66..70b36e8c 100644 --- a/app/view/settings/list_management/lottery_list.py +++ b/app/view/settings/list_management/lottery_list.py @@ -1,25 +1,20 @@ # ================================================== # 导入库 # ================================================== -import json -import os -import sys -import subprocess - from loguru import logger -from PyQt6.QtWidgets import * -from PyQt6.QtGui import * -from PyQt6.QtCore import * -from PyQt6.QtNetwork import * -from qfluentwidgets import * - -from app.tools.variable import * -from app.tools.path_utils import * -from app.tools.personalised import * -from app.tools.settings_default import * -from app.tools.settings_access import * -from app.Language.obtain_language import * -from app.tools.list import * +from PyQt6.QtCore import QFileSystemWatcher, QTimer +from qfluentwidgets import GroupHeaderCardWidget, PushButton, ComboBox + +from app.tools.path_utils import get_path +from app.tools.settings_access import readme_settings_async, update_settings +from app.tools.personalised import get_theme_icon +from app.Language.obtain_language import ( + get_content_name_async, + get_content_description_async, + get_content_pushbutton_name_async, +) +from app.tools.list import get_pool_name_list + # ================================================== # 抽奖名单 @@ -31,48 +26,92 @@ def __init__(self, parent=None): self.setBorderRadius(8) # 设置班级名称按钮 - self.pool_name_button = PushButton(get_content_name_async("lottery_list", "set_pool_name")) + self.pool_name_button = PushButton( + get_content_pushbutton_name_async("lottery_list", "set_pool_name") + ) self.pool_name_button.clicked.connect(lambda: self.set_pool_name()) # 选择奖池下拉框 self.pool_name_combo = ComboBox() self.refresh_pool_list() # 初始化奖池列表 - self.pool_name_combo.setCurrentIndex(readme_settings_async("lottery_list", "select_pool_name")) + self.pool_name_combo.setCurrentIndex( + readme_settings_async("lottery_list", "select_pool_name") + ) if not get_pool_name_list(): self.pool_name_combo.setCurrentIndex(-1) - self.pool_name_combo.setPlaceholderText(get_content_name_async("lottery_list", "select_pool_name")) - self.pool_name_combo.currentIndexChanged.connect(lambda: update_settings("lottery_list", "select_pool_name", self.pool_name_combo.currentIndex())) + self.pool_name_combo.setPlaceholderText( + get_content_name_async("lottery_list", "select_pool_name") + ) + self.pool_name_combo.currentIndexChanged.connect( + lambda: update_settings( + "lottery_list", "select_pool_name", self.pool_name_combo.currentIndex() + ) + ) # 导入奖品名单按钮 - self.import_prize_button = PushButton(get_content_name_async("lottery_list", "import_prize_name")) + self.import_prize_button = PushButton( + get_content_pushbutton_name_async("lottery_list", "import_prize_name") + ) self.import_prize_button.clicked.connect(lambda: self.import_prize_name()) # 奖品设置按钮 - self.prize_setting_button = PushButton(get_content_name_async("lottery_list", "prize_setting")) + self.prize_setting_button = PushButton( + get_content_pushbutton_name_async("lottery_list", "prize_setting") + ) self.prize_setting_button.clicked.connect(lambda: self.prize_setting()) # 奖品权重设置按钮 - self.prize_weight_setting_button = PushButton(get_content_name_async("lottery_list", "prize_weight_setting")) - self.prize_weight_setting_button.clicked.connect(lambda: self.prize_weight_setting()) + self.prize_weight_setting_button = PushButton( + get_content_pushbutton_name_async("lottery_list", "prize_weight_setting") + ) + self.prize_weight_setting_button.clicked.connect( + lambda: self.prize_weight_setting() + ) # 导出奖品名单按钮 - self.export_prize_button = PushButton(get_content_name_async("lottery_list", "export_prize_name")) + self.export_prize_button = PushButton( + get_content_pushbutton_name_async("lottery_list", "export_prize_name") + ) self.export_prize_button.clicked.connect(lambda: self.export_prize_name()) # 添加设置项到分组 - self.addGroup(get_theme_icon("ic_fluent_slide_text_edit_20_filled"), - get_content_name_async("lottery_list", "set_pool_name"), get_content_description_async("lottery_list", "set_pool_name"), self.pool_name_button) - self.addGroup(get_theme_icon("ic_fluent_class_20_filled"), - get_content_name_async("lottery_list", "select_pool_name"), get_content_description_async("lottery_list", "select_pool_name"), self.pool_name_combo) - self.addGroup(get_theme_icon("ic_fluent_people_list_20_filled"), - get_content_name_async("lottery_list", "import_prize_name"), get_content_description_async("lottery_list", "import_prize_name"), self.import_prize_button) - self.addGroup(get_theme_icon("ic_fluent_rename_20_filled"), - get_content_name_async("lottery_list", "prize_setting"), get_content_description_async("lottery_list", "prize_setting"), self.prize_setting_button) - self.addGroup(get_theme_icon("ic_fluent_person_board_20_filled"), - get_content_name_async("lottery_list", "prize_weight_setting"), get_content_description_async("lottery_list", "prize_weight_setting"), self.prize_weight_setting_button) - self.addGroup(get_theme_icon("ic_fluent_people_list_20_filled"), - get_content_name_async("lottery_list", "export_prize_name"), get_content_description_async("lottery_list", "export_prize_name"), self.export_prize_button) - + self.addGroup( + get_theme_icon("ic_fluent_slide_text_edit_20_filled"), + get_content_name_async("lottery_list", "set_pool_name"), + get_content_description_async("lottery_list", "set_pool_name"), + self.pool_name_button, + ) + self.addGroup( + get_theme_icon("ic_fluent_class_20_filled"), + get_content_name_async("lottery_list", "select_pool_name"), + get_content_description_async("lottery_list", "select_pool_name"), + self.pool_name_combo, + ) + self.addGroup( + get_theme_icon("ic_fluent_people_list_20_filled"), + get_content_name_async("lottery_list", "import_prize_name"), + get_content_description_async("lottery_list", "import_prize_name"), + self.import_prize_button, + ) + self.addGroup( + get_theme_icon("ic_fluent_rename_20_filled"), + get_content_name_async("lottery_list", "prize_setting"), + get_content_description_async("lottery_list", "prize_setting"), + self.prize_setting_button, + ) + self.addGroup( + get_theme_icon("ic_fluent_person_board_20_filled"), + get_content_name_async("lottery_list", "prize_weight_setting"), + get_content_description_async("lottery_list", "prize_weight_setting"), + self.prize_weight_setting_button, + ) + self.addGroup( + get_theme_icon("ic_fluent_people_list_20_filled"), + get_content_name_async("lottery_list", "export_prize_name"), + get_content_description_async("lottery_list", "export_prize_name"), + self.export_prize_button, + ) + # 设置文件系统监视器 self.setup_file_watcher() @@ -80,25 +119,25 @@ def setup_file_watcher(self): """设置文件系统监视器,监控奖池名单文件夹的变化""" # 获取奖池名单文件夹路径 lottery_list_dir = get_path("app/resources/list/lottery_list") - + # 确保目录存在 if not lottery_list_dir.exists(): logger.warning(f"奖池名单文件夹不存在: {lottery_list_dir}") return - + # 创建文件系统监视器 self.file_watcher = QFileSystemWatcher() - + # 监视目录 self.file_watcher.addPath(str(lottery_list_dir)) - + # 连接信号 self.file_watcher.directoryChanged.connect(self.on_directory_changed) # logger.debug(f"已设置文件监视器,监控目录: {lottery_list_dir}") def on_directory_changed(self, path): """当目录内容发生变化时调用此方法 - + Args: path: 发生变化的目录路径 """ @@ -110,20 +149,22 @@ def refresh_pool_list(self): """刷新奖池下拉框列表""" # 保存当前选中的奖池名称 current_pool_name = self.pool_name_combo.currentText() - + # 获取最新的奖池列表 pool_list = get_pool_name_list() - + # 清空并重新添加奖池列表 self.pool_name_combo.clear() self.pool_name_combo.addItems(pool_list) - + # 尝试恢复之前选中的奖池 if current_pool_name and current_pool_name in pool_list: index = pool_list.index(current_pool_name) self.pool_name_combo.setCurrentIndex(index) elif not pool_list: self.pool_name_combo.setCurrentIndex(-1) - self.pool_name_combo.setPlaceholderText(get_content_name_async("lottery_list", "select_pool_name")) - + self.pool_name_combo.setPlaceholderText( + get_content_name_async("lottery_list", "select_pool_name") + ) + # logger.debug(f"奖池列表已刷新,共 {len(pool_list)} 个奖池") diff --git a/app/view/settings/list_management/roll_call_list.py b/app/view/settings/list_management/roll_call_list.py index 55691abd..4e21f635 100644 --- a/app/view/settings/list_management/roll_call_list.py +++ b/app/view/settings/list_management/roll_call_list.py @@ -1,25 +1,20 @@ # ================================================== # 导入库 # ================================================== -import json -import os -import sys -import subprocess - from loguru import logger -from PyQt6.QtWidgets import * -from PyQt6.QtGui import * -from PyQt6.QtCore import * -from PyQt6.QtNetwork import * -from qfluentwidgets import * - -from app.tools.variable import * -from app.tools.path_utils import * -from app.tools.personalised import * -from app.tools.settings_default import * -from app.tools.settings_access import * -from app.Language.obtain_language import * -from app.tools.list import * +from PyQt6.QtCore import QFileSystemWatcher, QTimer +from qfluentwidgets import GroupHeaderCardWidget, PushButton, ComboBox + +from app.tools.path_utils import get_path +from app.tools.settings_access import readme_settings_async, update_settings +from app.tools.personalised import get_theme_icon +from app.Language.obtain_language import ( + get_content_name_async, + get_content_description_async, + get_content_pushbutton_name_async +) +from app.tools.list import get_class_name_list + # ================================================== # 点名名单 @@ -31,54 +26,104 @@ def __init__(self, parent=None): self.setBorderRadius(8) # 设置班级名称按钮 - self.class_name_button = PushButton(get_content_name_async("roll_call_list", "set_class_name")) + self.class_name_button = PushButton( + get_content_pushbutton_name_async("roll_call_list", "sett_class_name") + ) self.class_name_button.clicked.connect(lambda: self.set_class_name()) # 选择班级下拉框 self.class_name_combo = ComboBox() self.refresh_class_list() # 初始化班级列表 - self.class_name_combo.setCurrentIndex(readme_settings_async("roll_call_list", "select_class_name")) + self.class_name_combo.setCurrentIndex( + readme_settings_async("roll_call_list", "select_class_name") + ) if not get_class_name_list(): self.class_name_combo.setCurrentIndex(-1) - self.class_name_combo.setPlaceholderText(get_content_name_async("roll_call_list", "select_class_name")) - self.class_name_combo.currentIndexChanged.connect(lambda: update_settings("roll_call_list", "select_class_name", self.class_name_combo.currentIndex())) + self.class_name_combo.setPlaceholderText( + get_content_name_async("roll_call_list", "select_class_name") + ) + self.class_name_combo.currentIndexChanged.connect( + lambda: update_settings( + "roll_call_list", + "select_class_name", + self.class_name_combo.currentIndex(), + ) + ) # 导入学生名单按钮 - self.import_student_button = PushButton(get_content_name_async("roll_call_list", "import_student_name")) + self.import_student_button = PushButton( + get_content_pushbutton_name_async("roll_call_list", "import_student_name") + ) self.import_student_button.clicked.connect(lambda: self.import_student_name()) # 姓名设置按钮 - self.name_setting_button = PushButton(get_content_name_async("roll_call_list", "name_setting")) + self.name_setting_button = PushButton( + get_content_pushbutton_name_async("roll_call_list", "name_setting") + ) self.name_setting_button.clicked.connect(lambda: self.name_setting()) # 性别设置按钮 - self.gender_setting_button = PushButton(get_content_name_async("roll_call_list", "gender_setting")) + self.gender_setting_button = PushButton( + get_content_pushbutton_name_async("roll_call_list", "gender_setting") + ) self.gender_setting_button.clicked.connect(lambda: self.gender_setting()) # 小组设置按钮 - self.group_setting_button = PushButton(get_content_name_async("roll_call_list", "group_setting")) + self.group_setting_button = PushButton( + get_content_pushbutton_name_async("roll_call_list", "group_setting") + ) self.group_setting_button.clicked.connect(lambda: self.group_setting()) # 导出学生名单按钮 - self.export_student_button = PushButton(get_content_name_async("roll_call_list", "export_student_name")) + self.export_student_button = PushButton( + get_content_pushbutton_name_async("roll_call_list", "export_student_name") + ) self.export_student_button.clicked.connect(lambda: self.export_student_name()) # 添加设置项到分组 - self.addGroup(get_theme_icon("ic_fluent_slide_text_edit_20_filled"), - get_content_name_async("roll_call_list", "set_class_name"), get_content_description_async("roll_call_list", "set_class_name"), self.class_name_button) - self.addGroup(get_theme_icon("ic_fluent_class_20_filled"), - get_content_name_async("roll_call_list", "select_class_name"), get_content_description_async("roll_call_list", "select_class_name"), self.class_name_combo) - self.addGroup(get_theme_icon("ic_fluent_people_list_20_filled"), - get_content_name_async("roll_call_list", "import_student_name"), get_content_description_async("roll_call_list", "import_student_name"), self.import_student_button) - self.addGroup(get_theme_icon("ic_fluent_rename_20_filled"), - get_content_name_async("roll_call_list", "name_setting"), get_content_description_async("roll_call_list", "name_setting"), self.name_setting_button) - self.addGroup(get_theme_icon("ic_fluent_person_board_20_filled"), - get_content_name_async("roll_call_list", "gender_setting"), get_content_description_async("roll_call_list", "gender_setting"), self.gender_setting_button) - self.addGroup(get_theme_icon("ic_fluent_tab_group_20_filled"), - get_content_name_async("roll_call_list", "group_setting"), get_content_description_async("roll_call_list", "group_setting"), self.group_setting_button) - self.addGroup(get_theme_icon("ic_fluent_people_list_20_filled"), - get_content_name_async("roll_call_list", "export_student_name"), get_content_description_async("roll_call_list", "export_student_name"), self.export_student_button) - + self.addGroup( + get_theme_icon("ic_fluent_slide_text_edit_20_filled"), + get_content_name_async("roll_call_list", "set_class_name"), + get_content_description_async("roll_call_list", "set_class_name"), + self.class_name_button, + ) + self.addGroup( + get_theme_icon("ic_fluent_class_20_filled"), + get_content_name_async("roll_call_list", "select_class_name"), + get_content_description_async("roll_call_list", "select_class_name"), + self.class_name_combo, + ) + self.addGroup( + get_theme_icon("ic_fluent_people_list_20_filled"), + get_content_name_async("roll_call_list", "import_student_name"), + get_content_description_async("roll_call_list", "import_student_name"), + self.import_student_button, + ) + self.addGroup( + get_theme_icon("ic_fluent_rename_20_filled"), + get_content_name_async("roll_call_list", "name_setting"), + get_content_description_async("roll_call_list", "name_setting"), + self.name_setting_button, + ) + self.addGroup( + get_theme_icon("ic_fluent_person_board_20_filled"), + get_content_name_async("roll_call_list", "gender_setting"), + get_content_description_async("roll_call_list", "gender_setting"), + self.gender_setting_button, + ) + self.addGroup( + get_theme_icon("ic_fluent_tab_group_20_filled"), + get_content_name_async("roll_call_list", "group_setting"), + get_content_description_async("roll_call_list", "group_setting"), + self.group_setting_button, + ) + self.addGroup( + get_theme_icon("ic_fluent_people_list_20_filled"), + get_content_name_async("roll_call_list", "export_student_name"), + get_content_description_async("roll_call_list", "export_student_name"), + self.export_student_button, + ) + # 设置文件系统监视器 self.setup_file_watcher() @@ -86,25 +131,25 @@ def setup_file_watcher(self): """设置文件系统监视器,监控班级名单文件夹的变化""" # 获取班级名单文件夹路径 roll_call_list_dir = get_path("app/resources/list/roll_call_list") - + # 确保目录存在 if not roll_call_list_dir.exists(): logger.warning(f"班级名单文件夹不存在: {roll_call_list_dir}") return - + # 创建文件系统监视器 self.file_watcher = QFileSystemWatcher() - + # 监视目录 self.file_watcher.addPath(str(roll_call_list_dir)) - + # 连接信号 self.file_watcher.directoryChanged.connect(self.on_directory_changed) # logger.debug(f"已设置文件监视器,监控目录: {roll_call_list_dir}") def on_directory_changed(self, path): """当目录内容发生变化时调用此方法 - + Args: path: 发生变化的目录路径 """ @@ -116,20 +161,22 @@ def refresh_class_list(self): """刷新班级下拉框列表""" # 保存当前选中的班级名称 current_class_name = self.class_name_combo.currentText() - + # 获取最新的班级列表 class_list = get_class_name_list() - + # 清空并重新添加班级列表 self.class_name_combo.clear() self.class_name_combo.addItems(class_list) - + # 尝试恢复之前选中的班级 if current_class_name and current_class_name in class_list: index = class_list.index(current_class_name) self.class_name_combo.setCurrentIndex(index) elif not class_list: self.class_name_combo.setCurrentIndex(-1) - self.class_name_combo.setPlaceholderText(get_content_name_async("roll_call_list", "select_class_name")) - - # logger.debug(f"班级列表已刷新,共 {len(class_list)} 个班级") \ No newline at end of file + self.class_name_combo.setPlaceholderText( + get_content_name_async("roll_call_list", "select_class_name") + ) + + # logger.debug(f"班级列表已刷新,共 {len(class_list)} 个班级") From 2b2ba51bd1c771d5902664164c29d14feeb5fb3c Mon Sep 17 00:00:00 2001 From: jimmy-sketch Date: Sun, 2 Nov 2025 00:14:31 +0800 Subject: [PATCH 07/27] =?UTF-8?q?fix:=20=E4=BC=98=E5=8C=96=E2=80=9C?= =?UTF-8?q?=E6=8A=BD=E5=8F=96=E8=AE=BE=E7=BD=AE=E2=80=9D=E9=A1=B5=E9=9D=A2?= =?UTF-8?q?=E7=9A=84=E6=96=87=E6=9C=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/Language/modules/extraction_settings.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/app/Language/modules/extraction_settings.py b/app/Language/modules/extraction_settings.py index 462038b1..9b14694b 100644 --- a/app/Language/modules/extraction_settings.py +++ b/app/Language/modules/extraction_settings.py @@ -33,14 +33,14 @@ "combo_items": ["重复抽取", "不重复抽取", "半重复抽取"], }, "clear_record": { - "name": "清除抽取记录方式", - "description": "设置清除点名抽取记录的方式", + "name": "自动清除点名抽取记录", + "description": "设置何时自动清除点名抽取记录", "combo_items": ["重启后清除", "直到全部抽取完"], "combo_items_other": ["重启后清除", "直到全部抽取完", "无需清除"], }, "half_repeat": { "name": "半重复抽取次数", - "description": "设置半重复抽取的次数", + "description": "设置一个学生在重置抽取记录前最多能被抽取几次", }, "clear_time": { "name": "抽取后定时清除时间", From ee2b1eb00b29c66bd1681370ac575e73757e95d3 Mon Sep 17 00:00:00 2001 From: jimmy-sketch Date: Sun, 2 Nov 2025 09:36:46 +0800 Subject: [PATCH 08/27] =?UTF-8?q?chore:=20=E5=AE=89=E6=8E=92=20pre-commit?= =?UTF-8?q?=20ruff=20hook,=20ruff=20ci?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...17\346\264\236\346\212\245\345\221\212.md" | 2 +- ...56\351\242\230\346\212\245\345\221\212.md" | 2 +- ...07\346\241\243\346\224\271\350\277\233.md" | 2 +- ...56\351\242\230\345\222\250\350\257\242.md" | 2 +- .github/workflows/build.yml | 38 +- .github/workflows/ruff.yml | 8 + .idea/MarsCodeWorkspaceAppSettings.xml | 2 +- .idea/SecRandom.iml | 2 +- .idea/codeStyles/codeStyleConfig.xml | 2 +- .../inspectionProfiles/profiles_settings.xml | 2 +- .idea/material_theme_project_new.xml | 2 +- .idea/misc.xml | 2 +- .idea/modules.xml | 2 +- .idea/vcs.xml | 2 +- .pre-commit-config.yaml | 19 + CHANGELOG.md | 4 +- LICENSE | 2 +- README.md | 8 +- app/Language/ZH_CN.py | 1607 +++++----------- app/Language/obtain_language.py | 332 ++-- app/common/another_window.py | 284 +-- app/common/config.py | 19 +- app/page_building/main_window_page.py | 2 - app/page_building/page_template.py | 175 +- app/page_building/settings_window_page.py | 82 +- app/resources/Language/ZH_CN.json | 4 +- .../assets/FluentSystemIcons-Filled.json | 2 +- .../light/ic_fluent_flash_20_filled_light.svg | 2 +- app/resources/font/LICENSE.txt | Bin 32768 -> 32764 bytes app/tools/extract.py | 81 +- app/tools/history.py | 213 ++- app/tools/language_manager.py | 78 +- app/tools/list.py | 78 +- app/tools/path_utils.py | 176 +- app/tools/personalised.py | 105 +- app/tools/settings_access.py | 127 +- app/tools/settings_default.py | 76 +- app/tools/settings_default_storage.py | 1638 ++++------------- app/tools/variable.py | 42 +- app/view/main/window.py | 89 +- app/view/settings/about.py | 120 +- app/view/settings/basic_settings.py | 249 ++- .../floating_window_management.py | 326 +++- .../custom_settings/page_management.py | 512 +++++- .../sidebar_tray_management.py | 573 ++++-- .../custom_draw_settings.py | 34 +- .../instant_draw_settings.py | 686 +++++-- .../extraction_settings/lottery_settings.py | 618 +++++-- .../quick_draw_settings.py | 666 +++++-- .../extraction_settings/roll_call_settings.py | 658 +++++-- .../settings/history/history_management.py | 201 +- .../settings/history/lottery_history_table.py | 6 - .../history/roll_call_history_table.py | 414 +++-- app/view/settings/home.py | 23 +- .../list_management/custom_draw_list.py | 34 +- .../settings/list_management/lottery_list.py | 115 +- .../settings/list_management/lottery_table.py | 195 +- .../list_management/roll_call_list.py | 127 +- .../list_management/roll_call_table.py | 203 +- .../more_settings/advanced_settings.py | 6 - app/view/settings/more_settings/debug.py | 16 +- .../more_settings/experimental_features.py | 6 - .../custom_draw_notification_settings.py | 395 +++- .../instant_draw_notification_settings.py | 400 +++- .../lottery_notification_settings.py | 372 +++- .../more_notification_settings.py | 5 - .../quick_draw_notification_settings.py | 385 +++- .../roll_call_notification_settings.py | 385 +++- .../advanced_safety_settings.py | 193 +- .../safety_settings/basic_safety_settings.py | 284 ++- app/view/settings/settings.py | 165 +- .../voice_settings/basic_voice_settings.py | 268 ++- .../voice_settings/specific_announcements.py | 6 - app/view/tray/tray.py | 80 +- main.py | 108 +- pyproject.toml | 17 +- requirements-windows.txt | 2 +- update_version.py | 74 +- uv.lock | 123 ++ 79 files changed, 8943 insertions(+), 5422 deletions(-) create mode 100644 .github/workflows/ruff.yml create mode 100644 .pre-commit-config.yaml diff --git "a/.github/ISSUE_TEMPLATE/\345\256\211\345\205\250\346\274\217\346\264\236\346\212\245\345\221\212.md" "b/.github/ISSUE_TEMPLATE/\345\256\211\345\205\250\346\274\217\346\264\236\346\212\245\345\221\212.md" index daad9f17..d78d61b4 100644 --- "a/.github/ISSUE_TEMPLATE/\345\256\211\345\205\250\346\274\217\346\264\236\346\212\245\345\221\212.md" +++ "b/.github/ISSUE_TEMPLATE/\345\256\211\345\205\250\346\274\217\346\264\236\346\212\245\345\221\212.md" @@ -48,4 +48,4 @@ assignees: LZY98276 ## ✅ 最后确认 - [ ] 我已提供**详细复现步骤** - [ ] 我理解可能需要**私下沟通**漏洞细节 -- [ ] 我愿意协助漏洞修复测试 \ No newline at end of file +- [ ] 我愿意协助漏洞修复测试 diff --git "a/.github/ISSUE_TEMPLATE/\346\200\247\350\203\275\351\227\256\351\242\230\346\212\245\345\221\212.md" "b/.github/ISSUE_TEMPLATE/\346\200\247\350\203\275\351\227\256\351\242\230\346\212\245\345\221\212.md" index 475c8db1..d781b495 100644 --- "a/.github/ISSUE_TEMPLATE/\346\200\247\350\203\275\351\227\256\351\242\230\346\212\245\345\221\212.md" +++ "b/.github/ISSUE_TEMPLATE/\346\200\247\350\203\275\351\227\256\351\242\230\346\212\245\345\221\212.md" @@ -46,4 +46,4 @@ assignees: LZY98276 ## ✅ 最后确认 - [ ] 我已提供**具体性能数据**和**复现步骤** - [ ] 我理解性能优化可能需要**多轮测试** -- [ ] 我愿意协助进行性能测试和验证 \ No newline at end of file +- [ ] 我愿意协助进行性能测试和验证 diff --git "a/.github/ISSUE_TEMPLATE/\346\226\207\346\241\243\346\224\271\350\277\233.md" "b/.github/ISSUE_TEMPLATE/\346\226\207\346\241\243\346\224\271\350\277\233.md" index 262ae6d2..2bb4e4d4 100644 --- "a/.github/ISSUE_TEMPLATE/\346\226\207\346\241\243\346\224\271\350\277\233.md" +++ "b/.github/ISSUE_TEMPLATE/\346\226\207\346\241\243\346\224\271\350\277\233.md" @@ -30,4 +30,4 @@ assignees: yuanbenxin ## ✅ 最后确认 - [ ] 我已提供**具体位置和改进建议** -- [ ] 我知道清晰的描述能帮助开发者快速修复文档问题 \ No newline at end of file +- [ ] 我知道清晰的描述能帮助开发者快速修复文档问题 diff --git "a/.github/ISSUE_TEMPLATE/\351\227\256\351\242\230\345\222\250\350\257\242.md" "b/.github/ISSUE_TEMPLATE/\351\227\256\351\242\230\345\222\250\350\257\242.md" index a8212eba..bed64ba5 100644 --- "a/.github/ISSUE_TEMPLATE/\351\227\256\351\242\230\345\222\250\350\257\242.md" +++ "b/.github/ISSUE_TEMPLATE/\351\227\256\351\242\230\345\222\250\350\257\242.md" @@ -36,4 +36,4 @@ assignees: LZY98276 ## ✅ 最后确认 - [ ] 我已提供**详细问题描述和截图** -- [ ] 我知道可以通过**Discussions**获得更快的社区支持 \ No newline at end of file +- [ ] 我知道可以通过**Discussions**获得更快的社区支持 diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 288abc1a..a48d1051 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -1,6 +1,6 @@ name: 构建 -on: +on: push: pull_request: workflow_dispatch: @@ -13,7 +13,7 @@ jobs: builder_matrix: # 仅在push或pull_request事件包含'进行打包'时执行,workflow_dispatch无条件执行 if: | - github.event_name == 'workflow_dispatch' || + github.event_name == 'workflow_dispatch' || contains(github.event.head_commit.message, '进行打包') || (github.event_name == 'pull_request' && contains(github.event.pull_request.title, '进行打包')) strategy: @@ -58,21 +58,21 @@ jobs: echo "创建虚拟环境..." uv venv if ($LASTEXITCODE -ne 0) { exit $LASTEXITCODE } - + # 激活虚拟环境 echo "激活虚拟环境..." .venv/Scripts/activate - + # 安装依赖 echo "安装项目依赖..." uv pip install -r requirements-windows.txt if ($LASTEXITCODE -ne 0) { exit $LASTEXITCODE } - + # 安装 pyinstaller echo "安装 PyInstaller..." uv pip install pyinstaller if ($LASTEXITCODE -ne 0) { exit $LASTEXITCODE } - + # 清理之前的构建文件 echo "清理之前的构建文件..." Remove-Item -Recurse -Force dist -ErrorAction SilentlyContinue @@ -91,33 +91,33 @@ jobs: --add-data ./app/resources:app/resources ` --add-data LICENSE:. ` --version-file=version_info.txt - if ($LASTEXITCODE -ne 0) { + if ($LASTEXITCODE -ne 0) { echo "目录模式打包失败" - exit $LASTEXITCODE + exit $LASTEXITCODE } echo "目录模式打包完成" } - name: 打包操作 - if: ${{ matrix.os == 'windows-2022'}} + if: ${{ matrix.os == 'windows-2022'}} run: | echo "开始打包操作..." - + # 创建zip_dist/SecRandom目录 mkdir -p zip_dist/SecRandom - + # 复制dist/SecRandom目录下的所有文件到zip_dist/SecRandom目录下 Copy-Item -Recurse -Force dist/SecRandom/* zip_dist/SecRandom/ - + # 创建app目录 mkdir -p zip_dist/SecRandom/app - + # 复制app/resources文件夹到zip_dist/SecRandom目录下 Copy-Item -Recurse -Force app/resources zip_dist/SecRandom/app - + # 复制 LICENSE 文件到zip_dist/SecRandom目录下 Copy-Item LICENSE zip_dist/SecRandom/ - + # 使用 zip 压缩文件 mkdir zip -Force $outputZip = "zip/SecRandom-Windows-${{ github.ref_name }}-${{ matrix.arch }}-dir.zip" @@ -163,7 +163,7 @@ jobs: path: artifacts run-id: ${{ github.run_id }} - - name: 准备 artifacts + - name: 准备 artifacts run: | echo "整理构建产物..." # Windows 构建产物 @@ -185,7 +185,7 @@ jobs: done echo "SHA256校验值计算完成:" cat SHA256SUMS.txt - + - name: 验证 SHA256SUMS.txt 文件 run: | echo "验证SHA256SUMS.txt文件..." @@ -230,7 +230,7 @@ jobs: done < SHA256SUMS.txt rm SHA256SUMS.txt cd .. - + - name: 确定发布类型 id: release-type run: | @@ -252,4 +252,4 @@ jobs: name: SecRandom 新版本 - ${{ github.ref_name }} fail_on_unmatched_files: true env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} \ No newline at end of file + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} diff --git a/.github/workflows/ruff.yml b/.github/workflows/ruff.yml new file mode 100644 index 00000000..4adeffd7 --- /dev/null +++ b/.github/workflows/ruff.yml @@ -0,0 +1,8 @@ +name: Ruff +on: [ push, pull_request ] +jobs: + ruff: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - uses: astral-sh/ruff-action@v3 diff --git a/.idea/MarsCodeWorkspaceAppSettings.xml b/.idea/MarsCodeWorkspaceAppSettings.xml index afda9c38..9d69744c 100644 --- a/.idea/MarsCodeWorkspaceAppSettings.xml +++ b/.idea/MarsCodeWorkspaceAppSettings.xml @@ -4,4 +4,4 @@ - \ No newline at end of file + diff --git a/.idea/misc.xml b/.idea/misc.xml index e557d17a..b816b3d6 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -4,4 +4,4 @@