feat: add i18n internationalization support

- Add react-i18next, i18next with browser language detection
- Support Traditional Chinese (zh-TW) and English (en)
- Default language: zh-TW, stored in localStorage
- Create 10 translation namespaces (common, auth, dashboard, tasks, etc.)
- Add LanguageSwitcher component in header
- Translate pages: Login, Dashboard, Tasks, Spaces, Workload, Audit

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
beabigegg
2026-01-08 23:18:41 +08:00
parent 1e31def7ba
commit 4bc3c24360
32 changed files with 1741 additions and 104 deletions

View File

@@ -0,0 +1,134 @@
{
"title": "任務",
"createTask": "建立任務",
"editTask": "編輯任務",
"deleteTask": "刪除任務",
"taskDetails": "任務詳情",
"fields": {
"title": "標題",
"titlePlaceholder": "輸入任務標題",
"description": "描述",
"descriptionPlaceholder": "輸入任務描述",
"status": "狀態",
"priority": "優先順序",
"assignee": "負責人",
"dueDate": "截止日期",
"startDate": "開始日期",
"estimatedHours": "預估工時",
"actualHours": "實際工時",
"progress": "進度",
"tags": "標籤",
"parent": "父任務",
"subtasks": "子任務",
"attachments": "附件",
"comments": "留言",
"watchers": "關注者",
"blockers": "阻擋項目"
},
"status": {
"todo": "待處理",
"in_progress": "進行中",
"review": "審核中",
"done": "已完成",
"cancelled": "已取消",
"blocked": "被阻擋"
},
"priority": {
"low": "低",
"medium": "中",
"high": "高",
"urgent": "緊急"
},
"views": {
"list": "列表",
"kanban": "看板",
"calendar": "日曆",
"gantt": "甘特圖",
"timeline": "時間軸"
},
"filters": {
"all": "全部任務",
"myTasks": "我的任務",
"unassigned": "未指派",
"overdue": "逾期",
"dueThisWeek": "本週到期",
"highPriority": "高優先順序",
"recentlyUpdated": "最近更新"
},
"sort": {
"sortBy": "排序方式",
"dueDate": "截止日期",
"priority": "優先順序",
"status": "狀態",
"title": "標題",
"createdAt": "建立時間",
"updatedAt": "更新時間",
"ascending": "升序",
"descending": "降序"
},
"actions": {
"assign": "指派",
"reassign": "重新指派",
"changeStatus": "變更狀態",
"changePriority": "變更優先順序",
"addSubtask": "新增子任務",
"addComment": "新增留言",
"addAttachment": "新增附件",
"addWatcher": "新增關注者",
"removeWatcher": "移除關注者",
"duplicate": "複製任務",
"archive": "封存",
"restore": "還原",
"moveToProject": "移至專案"
},
"subtasks": {
"title": "子任務",
"add": "新增子任務",
"placeholder": "輸入子任務標題",
"completed": "已完成 {{count}} / {{total}}",
"empty": "沒有子任務"
},
"comments": {
"title": "留言",
"add": "新增留言",
"placeholder": "輸入您的留言...",
"edited": "已編輯",
"delete": "刪除留言",
"confirmDelete": "確定要刪除此留言嗎?",
"empty": "還沒有留言",
"reply": "回覆"
},
"attachments": {
"title": "附件",
"add": "新增附件",
"upload": "上傳檔案",
"dragDrop": "拖放檔案至此或點擊上傳",
"maxSize": "最大檔案大小:{{size}}MB",
"downloading": "下載中...",
"empty": "沒有附件"
},
"blockers": {
"title": "阻擋項目",
"add": "新增阻擋項目",
"blockedBy": "被以下任務阻擋",
"blocking": "正在阻擋以下任務",
"remove": "移除阻擋關係",
"empty": "沒有阻擋項目"
},
"messages": {
"created": "任務已建立",
"updated": "任務已更新",
"deleted": "任務已刪除",
"statusChanged": "狀態已變更為「{{status}}」",
"assigned": "已指派給 {{assignee}}",
"unassigned": "已取消指派",
"commentAdded": "留言已新增",
"attachmentUploaded": "附件已上傳",
"confirmDelete": "確定要刪除此任務嗎?此操作無法復原。"
},
"empty": {
"title": "沒有任務",
"description": "目前沒有任務。建立您的第一個任務開始吧!",
"filtered": "沒有符合篩選條件的任務"
}
}