Skip to content

v6.6.6

Latest

Choose a tag to compare

@OliverZhaohaibin OliverZhaohaibin released this 10 Jun 12:17
· 34 commits to main since this release
f11910b

🚀 v6.6.6 — Internationalization, Map Runtime & Location Resilience

🌐 Major improvements to UI internationalization, runtime language switching, map preview runtime behavior, and location assignment reliability.

Key Updates

🌐 GUI Internationalization

  • Added TranslationManager as a runtime service on RuntimeContext, backed by the ui.language setting and runtime languageChanged refresh signals.
  • Added bundled Qt translation resources for German and Simplified Chinese, including languages.json metadata and package-data coverage for .ts / .qm resources.
  • Added a language menu under Settings with English, Deutsch, and 简体中文 choices; English remains the fallback language.
  • Migrated major GUI surfaces to translated text, including main menus, status-bar feedback, info panel, People dashboard, album navigation, gallery context menus, detail/player controls, share/export feedback, face overlays, edit sidebar controls, and the standalone map preview entry point.
  • Added locale-aware GUI formatters for dates, integers, decimals, and file sizes so translated surfaces do not depend on the host system locale.

🧰 i18n Tooling & Guardrails

  • Added Python-aware i18n extraction through tools/extract_i18n_strings.py and scripts/i18n_extract.sh, covering src/iPhoto/gui and src/maps.
  • Added scripts/i18n_compile.sh for rebuilding .qm translation resources with pyside6-lrelease.
  • Added tools/check_i18n_strings.py and architecture tests to block direct English literals in high-risk GUI APIs such as setText, setToolTip, QAction, dialogs, and status messages.
  • Added Apple Photos-aligned edit terminology notes under docs/requirements/i18n/.
  • Added a long-term i18n UI text guardrail under docs/misc/.

🗺️ Map Runtime Improvements

  • Extended standalone map preview backend selection with explicit auto, native, python, and legacy modes.
  • Added runtime diagnostics for map preview backend selection.
  • Hardened map surfaces with opaque backing colors and full-update repaint behavior.
  • Added optional map diagnostics through runtime flags.
  • Improved marker rendering inside supported map passes.

📍 Location Assignment Resilience

  • Assign Location now persists the selected place to global_index.db even when ExifTool is missing or original file metadata writeback fails.
  • Added user-facing warnings for missing ExifTool or failed GPS writeback while keeping the local database assignment intact.
  • Sanitized metadata updates before JSON storage so non-serializable third-party values cannot corrupt asset rows.

🚀 v6.6.6 — 国际化、地图运行时与位置分配可靠性提升

🌐 针对 UI 国际化、运行时语言切换、地图预览运行时行为以及位置分配可靠性进行了全面优化。

核心更新

🌐 GUI 国际化

  • 新增 TranslationManager,并将其作为 RuntimeContext 上的运行时服务,由 ui.language 设置和运行时 languageChanged 刷新信号驱动。
  • 新增内置 Qt 翻译资源,支持德语和简体中文,并包含 languages.json 元数据以及 .ts / .qm 资源的 package-data 覆盖。
  • 在 Settings 下新增语言菜单,支持 English、Deutsch 和 简体中文;English 仍作为默认回退语言。
  • 将主要 GUI 界面迁移为可翻译文本,包括主菜单、状态栏反馈、信息面板、People 面板、相册导航、图库右键菜单、详情页 / 播放器控件、分享 / 导出反馈、人脸覆盖层、编辑侧边栏控件以及独立地图预览入口。
  • 新增支持区域设置的 GUI 格式化工具,用于日期、整数、小数和文件大小显示,避免翻译界面依赖宿主系统语言环境。

🧰 i18n 工具链与防护机制

  • 新增面向 Python 的 i18n 字符串提取工具 tools/extract_i18n_strings.pyscripts/i18n_extract.sh,覆盖 src/iPhoto/guisrc/maps
  • 新增 scripts/i18n_compile.sh,用于通过 pyside6-lrelease 重新生成 .qm 翻译资源。
  • 新增 tools/check_i18n_strings.py 和架构测试,阻止在 setTextsetToolTipQAction、对话框和状态消息等高风险 GUI API 中直接写入英文文案。
  • docs/requirements/i18n/ 下新增对齐 Apple Photos 的编辑术语说明。
  • docs/misc/ 下新增长期 i18n UI 文案防护规范。

🗺️ 地图运行时改进

  • 扩展独立地图预览的后端选择能力,新增明确的 autonativepythonlegacy 模式。
  • 为地图预览后端选择新增运行时诊断信息。
  • 通过不透明背景和 full-update 重绘行为增强地图表面的稳定性。
  • 新增可选的地图运行时诊断开关。
  • 改进受支持地图渲染流程中的标记点绘制行为。

📍 位置分配可靠性

  • 即使 ExifTool 缺失或原始文件元数据回写失败,Assign Location 现在也会将选中的地点保存到 global_index.db
  • 当 ExifTool 缺失或 GPS 写回失败时,新增面向用户的警告提示,同时保留本地数据库中的位置分配结果。
  • 在写入 JSON 前清理元数据更新内容,避免第三方不可序列化值破坏资源数据行。