Skip to content

feat: 添加多語言功能與 FileDialog QR Code 分享#10

Open
bs10081 wants to merge 3 commits intooustn:mainfrom
bs10081:main
Open

feat: 添加多語言功能與 FileDialog QR Code 分享#10
bs10081 wants to merge 3 commits intooustn:mainfrom
bs10081:main

Conversation

@bs10081
Copy link

@bs10081 bs10081 commented Mar 10, 2026

Summary

新增國際化支援與 FileDialog QR Code 分享功能,讓用戶可以選擇偏好語言,並且收件人也能通過掃描 QR Code 再次分享文件。

主要功能

🌍 國際化(i18n)支援

  • 支援三種語言:簡體中文、繁體中文(臺灣)、English
  • 自動語言檢測:根據瀏覽器語言設定自動切換
  • 手動切換語言:提供語言切換選項
  • 完整翻譯:覆蓋所有 UI 文字、錯誤訊息、提示訊息

📱 FileDialog QR Code 分享

  • QR Code 顯示:在文件詳情對話框中顯示分享連結的 QR Code
  • 二次分享:收件人可以掃描 QR Code 再次分享給其他人
  • 便捷性提升:手機掃碼即可快速分享,無需複製連結

🐛 Bug 修復

  • 錯誤訊息 i18n:修復閱後即焚等場景下錯誤訊息忽略語言設定的問題
  • Wrangler Action:指定使用 Wrangler v4 以確保部署正常

實現細節

前端架構

  • 使用 MobX 管理語言狀態
  • i18n store 支援:
    • localStorage 持久化語言偏好
    • 瀏覽器語言自動檢測
    • 參數化翻譯(支援 {param} 佔位符)
  • dayjs locale 同步切換

錯誤處理優化

  • 後端返回統一錯誤碼(如 INVALID_CODE, SHARE_EXPIRED
  • 前端 errorMapper 自動映射錯誤碼到對應語言翻譯
  • 向後兼容非錯誤碼格式的訊息

檔案結構

web/i18n/
├── index.ts                    # 導出主要功能
├── LanguageSwitch.tsx          # 語言切換組件
├── store.ts                    # i18n 狀態管理
├── useTranslation.ts           # i18n Hook
├── types.ts                    # TypeScript 類型定義
└── locales/
    ├── zh-CN.ts               # 簡體中文
    ├── zh-TW.ts               # 繁體中文
    └── en.ts                  # English

測試驗證

  • 自動語言檢測正常工作
  • 手動切換語言即時生效
  • 所有頁面翻譯完整
  • 錯誤訊息遵循語言設定
  • QR Code 正常顯示並可掃描
  • 收件人掃碼後可正常訪問
  • 閱後即焚場景錯誤訊息正確顯示
  • 通過 pnpm lint 檢查

Screenshots

語言切換

語言切換組件位於頁面右上角,支援三種語言即時切換。

FileDialog QR Code

文件詳情對話框中顯示 QR Code,方便收件人掃碼再次分享。

影響範圍

  • ✅ 無破壞性變更
  • ✅ 向後兼容
  • ✅ 所有現有功能正常工作

Related Issues

Fixes: 錯誤訊息忽略 i18n 設定的問題


🤖 Generated with Claude Code

RegChien and others added 3 commits March 10, 2026 12:36
- 新增國際化支援(簡體中文、繁體中文(臺灣)、English)
- 根據瀏覽器設定自動切換語言
- 提供手動切換語言選項
- FileDialog 添加 QR Code 顯示功能(收件人也能掃碼分享)
- 添加專案說明文件 CLAUDE.md

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
解決 GitHub Actions 部署時因 Wrangler 版本不匹配導致的遷移失敗問題

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- 後端錯誤訊息改為錯誤碼(INVALID_CODE, SHARE_EXPIRED 等)
- 前端添加錯誤碼 i18n 翻譯(zh-CN, zh-TW, en)
- 創建 errorMapper 函數自動映射錯誤碼到翻譯
- 修改前端錯誤顯示使用 errorMapper
- 更新 eslint 和 prettier 配置忽略生成文件

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant