From 8852f8c498400d1bfb13e6a91d44a44e6aa58323 Mon Sep 17 00:00:00 2001 From: JacobLinCool Date: Mon, 24 Feb 2025 21:26:07 +0800 Subject: [PATCH] Revert "feat: I18npackage support for whole project (#148)" This reverts commit 7f68d921b087d9723c191027517c1173edfc3bc7. --- messages/en.json | 135 +----------- messages/zh.json | 139 +----------- src/lib/components/Chatroom.svelte | 33 ++- src/lib/components/Navbar.svelte | 36 ++-- src/lib/components/QrScanner.svelte | 36 +++- src/lib/components/SessionCard.svelte | 19 +- src/lib/components/session/HostView.svelte | 101 +++++++-- .../components/session/ParticipantView.svelte | 155 +++++++++++--- .../components/session/StageProgress.svelte | 22 +- src/routes/+page.svelte | 197 ++++++++++++++---- src/routes/dashboard/+page.svelte | 106 +++++++--- src/routes/join/+page.svelte | 29 ++- src/routes/login/+page.svelte | 23 +- src/routes/profile/+page.svelte | 61 ++++-- src/routes/session/[id]/+page.svelte | 13 +- .../[id]/discussion/[userId]/+page.svelte | 21 +- .../session/[id]/participant/+page.svelte | 12 +- src/routes/session/[id]/status/+page.svelte | 22 +- src/routes/template/[id]/+page.svelte | 97 +++++++-- src/routes/template/[id]/view/+page.svelte | 36 +++- 20 files changed, 808 insertions(+), 485 deletions(-) diff --git a/messages/en.json b/messages/en.json index 0db2f33..587a02a 100644 --- a/messages/en.json +++ b/messages/en.json @@ -40,138 +40,5 @@ "coreValues": "We chose the name Hinagiku because it reflects our core values: resilience, simplicity, and growth—much like the daisy flower itself, which flourishes in diverse conditions.", "mission": "Our mission is to help participants and hosts connect meaningfully by providing tools that facilitate better communication and collaboration in classrooms.", "openSource": "Open Source", - "openSourceDesc": "Hinagiku is open source and available on GitHub. We welcome contributions from the community!", - "confirmEndGroup": "Entering the Ended Stage is irreversible. Are you sure you want to proceed?", - "confirm": "Confirm", - "cancel": "Cancel", - "confirmEndSummarize": "Are you sure you want to confirm the group summary?", - "finishgroup": "Finish Group Discussion", - "groupInfo": "Group Information", - "groupManagement": "Group Management", - "createNewGroup": "Create New Group", - "jointGroup": "Join Group", - "waitStart": "Waiting for session to start...", - "end": "Please wait for the host to end the session.", - "status": "Session Status", - "individual": "Work on your individual contributions", - "beforeGroup": "Get ready to collaborate with your group.", - "group": "Collaborate with your group members.", - "ended": "Ended", - "member": "Members: ", - "groupNum": "Group Number", - "notInGroup": "You are not in a group yet.", - "leaveGroup": "Leave Group", - "hostBeginShortly": "The host will begin the session shortly.", - "unknownUser": "Unknown User", - "loadingProfile": "Loading...", - "you": "You", - "leader": " (Leader)", - "creatingGroup": "Creating...", - "joinExistingGroup": "Join Existing Group", - "enterGroupNumber": "Enter group number (1-50)", - "successCreateGroup": "Group created successfully", - "failedCreateGroup": "Failed to create group", - "successJoinGroup": "Joined group successfully", - "failedJoinGroup": "Failed to join group", - "successLeaveGroup": "Successfully left group", - "failedLeaveGroup": "Failed to leave group", - "invalidGroupNumber": "Please enter a valid group number (1-50)", - "placeholder": "Type your message...(max 500 characters)", - "send": "Send", - "record": "Record", - "stop": "Stop", - "thinking": "Thinking", - "waiting": "Waiting", - "confirmEndStage": "Entering the Ended Stage is irreversible. Are you sure you want to proceed?", - "stopCamera": "Stop Camera", - "startCamera": "Start Camera", - "uploadQrImage": "Upload QR Code Image", - "errorScanning": "error during scanning: ", - "errorStartingCamera": "error during starting camera: ", - "errorScanningFile": "error during scanning file: ", - "unableToFindQr": "Unable to find QR code in the image. Please ensure the image is clear and contains a valid QR code.", - "hosteBy": "Hosted by", - "viewSession": "View Session", - "joinSessionHost": "Join Session", - "joinSessionDescHost": "Please scan the QR code or enter the code to join the session.", - "showCode": "Show Code", - "showCodeDesc": "Show a 6-digit code for participants to join the session.", - "finalSummary": "Final Summary", - "mainTask": "Main Task", - "subtasks": "Subtasks:", - "resources": "Resources", - "noResources": "No resources available", - "waitingForParticipants": "Waiting for participants to join groups...", - "noParticipants": "No participants", - "removeParticipant": "Remove participant", - "openChatHistory": "Open chat history", - "openGroupChatHistory": "Open group chat history", - "warningInappropriate": "Warning: inappropriate content detected.", - "warningOffTopic": "Warning: many off-topic messages.", - "hostedBy": "Hosted by", - "sessionLabels": "Session Labels", - "welcomeDashboard": "Welcome to your dashboard", - "stats": "Statistics", - "recentActivity": "Recent Activity", - "createTemplate": "Create Template", - "createTemplateDesc": "Create a new discussion template", - "dashjoinSession": "Join Session", - "dashjoinSessionDesc": "Join an existing discussion session", - "editProfile": "Edit Profile", - "editProfileDesc": "Update your profile settings", - "publicTemplates": "Public Templates", - "viewAll": "View All", - "yourTemplates": "Your Templates", - "noTemplates": "No templates created yet", - "createFirstTemplate": "Create your first template to get started", - "createTemplateButton": "Create Your First Template", - "noSessions": "No sessions created yet", - "createSession": "Create a new session with template", - "JjoinSession": "Join Discussion Session", - "scanQr": "Scan the QR code provided by your session host to join the discussion.", - "enterCode": "Or please enter the 6-digits code to join.", - "joinButton": "Join Session", - "enterCodePlaceholder": "Enter code", - "back": "← Back to home", - "button": "Login", - "Llogin": "Sign in with your Google account to get started", - "profileSettings": "Profile Settings", - "updateInfo": "Update your personal information and preferences", - "successMessage": "Profile updated successfully!", - "errorMessage": "Cannot update profile. Please try again later.", - "displayName": "Display Name", - "title": "Title", - "titlePlaceholder": "e.g. Professor, Student, Teaching Assistant", - "bio": "Bio", - "bioPlaceholder": "Tell us about yourself", - "bioHelp": "Write a short bio to help others know more about you", - "Ttitle": "Title", - "TsaveChanges": "Save Changes", - "saving": "Saving...", - "typeMessage": "Type your message...", - "waitResponse": "Waiting for response...", - "PwaitingForParticipants": "Please wait for other participants...", - "editTemplate": "Edit Template", - "startSession": "Start Session", - "saveChanges": "Save changes before starting a session", - "startDiscussion": "Start a discussion session with this template", - "templateTitle": "Template title", - "mainTaskDesc": "Main task description", - "subtaskDesc": "Subtask description", - "addSubtask": "Add Subtask", - "makePublic": "Make template public", - "backToDashboard": "Back to Dashboard", - "unsavedChanges": "You have unsaved changes!", - "deleteTemplate": "Delete this Template", - "saveChangesButton": "Save Changes", - "allChangesSaved": "All changes saved", - "deleteConfirmation": "Are you sure you want to delete this template?", - "yesDelete": "Yes, delete it", - "noCancel": "No, cancel", - "loadingTemplate": "Loading template...", - "taskDescription": "Task Description", - "Tsubtasks": "Subtasks", - "Tpublic": "Public", - "Tprivate": "Private", - "lastUpdated": "Last Updated" + "openSourceDesc": "Hinagiku is open source and available on GitHub. We welcome contributions from the community!" } diff --git a/messages/zh.json b/messages/zh.json index 0f8e26e..4523330 100644 --- a/messages/zh.json +++ b/messages/zh.json @@ -41,142 +41,5 @@ "mission": "我們的使命是通過提供促進更好溝通和協作的工具,幫助參與者和主持人有意義地聯繫。", "openSource": "開源", "openSourceDesc": "Hinagiku是開源的,並在GitHub上可用。我們歡迎社區的貢獻!", - "confirmEndGroup": "進入 Ended Stage 將無法返回,確定要繼續嗎?", - "confirm": "確定", - "cancel": "取消", - "confirmEndSummarize": "確定要確認群組總結嗎?", - "finishgroup": "結束群組討論", - "groupInfo": "群組資訊", - "groupManagement": "群組管理", - "createNewGroup": "建立新群組", - "jointGroup": "加入群組", - "waitStart": "等待會議開始...", - "end": "請等待主持人結束會議。", - "status": "會議狀態", - "individual": "進行個人觀念發想", - "beforeGroup": "準備好與您的小組合作", - "group": "與您的小組成員合作討論", - "ended": "已結束", - "member": "成員:", - "groupNum": "小組編號", - "notInGroup": "您還沒有加入任何群組。", - "leaveGroup": "退出群組", - "hostBeginShortly": "主持人即將開始會議。", - "unknownUser": "未知使用者", - "loadingProfile": "載入中...", - "you": "您", - "leader": "(組長)", - "creatingGroup": "正在建立...", - "joinExistingGroup": "加入現有群組", - "enterGroupNumber": "請輸入群組編號 (1-50)", - "successCreateGroup": "成功建立群組", - "failedCreateGroup": "無法建立群組", - "successJoinGroup": "成功加入群組", - "failedJoinGroup": "無法加入群組", - "successLeaveGroup": "成功退出群組", - "failedLeaveGroup": "無法退出群組", - "invalidGroupNumber": "請輸入有效的群組編號 (1-50)", - "placeholder": "手動輸入文字...(最多500個字元)", - "send": "送出", - "record": "錄音", - "stop": "停止", - "thinking": "正在思考", - "waiting": "等待中", - "confirmEndStage": "進入總結階段將無法返回,確定要繼續嗎?", - "stopCamera": "停止相機", - "startCamera": "啟動相機", - "uploadQrImage": "上傳QRcode圖片", - "errorScanning": "掃描過程中出錯:", - "errorStartingCamera": "啟動相機過程中出錯:", - "errorScanningFile": "掃描文件過程中出錯:", - "unableToFindQr": "無法在圖像中找到QRcode。請確保圖像清晰並包含有效的QRcode。", - "hosteBy": "主持人:", - "viewSession": "查看會話", - "joinSessionHost": "加入會話", - "joinSessionDescHost": "請掃描QRcode或輸入代碼以加入會話。", - "showCode": "顯示代碼", - "showCodeDesc": "顯示一個6位數的代碼供參與者加入會話。", - "finalSummary": "最終總結", - "mainTask": "主要任務", - "subtasks": "子任務:", - "resources": "資源", - "noResources": "沒有可用資源", - "waitingForParticipants": "等待參與者加入小組...", - "noParticipants": "沒有參與者", - "removeParticipant": "移除參與者", - "openChatHistory": "打開聊天記錄", - "openGroupChatHistory": "打開小組聊天記錄", - "warningInappropriate": "警告:檢測到不適當內容。", - "warningOffTopic": "警告:許多離題訊息。", - "hostedBy": "主持人:", - "sessionLabels": "會話標籤", - "welcomeDashboard": "歡迎來到您的儀表板", - "stats": "統計數據", - "recentActivity": "最近活動", - "createTemplate": "創建模板", - "createTemplateDesc": "創建一個新的討論模板", - "dashjoinSession": "加入會話", - "dashjoinSessionDesc": "加入現有的討論會話", - "editProfile": "編輯個人資料", - "editProfileDesc": "更新您的個人資料設置", - "publicTemplates": "公開模板", - "viewAll": "查看全部", - "yourTemplates": "您的模板", - "noTemplates": "尚未創建模板", - "createFirstTemplate": "創建您的第一個模板以開始", - "createTemplateButton": "創建您的第一個模板", - "noSessions": "尚未創建會話", - "createSession": "使用模板創建新會話", - "JjoinSession": "加入討論會話", - "scanQr": "掃描會話主持人提供的QRcode加入討論。", - "enterCode": "或是輸入6位數代碼加入。", - "joinButton": "加入會話", - "enterCodePlaceholder": "輸入代碼", - "back": "← 返回首頁", - "button": "login", - "Llogin": "使用您的Google帳戶登入", - "profileSettings": "個人資料設定", - "updateInfo": "更新您的個人資料和偏好", - "successMessage": "個人資料更新成功!", - "errorMessage": "無法更新個人資料。請稍後再試。", - "displayName": "顯示名稱", - "title": "標題", - "titlePlaceholder": "例如:教授、學生、助教", - "bio": "簡介", - "bioPlaceholder": "介紹一下你自己", - "bioHelp": "寫一個簡短的簡介,幫助其他人更好地了解你", - "Ttitle": "職稱", - "TsaveChanges": "保存更改", - "saving": "保存中...", - "typeMessage": "輸入您的訊息...", - "waitResponse": "等待回應...", - "PwaitingForParticipants": "請等待其他參與者...", - "editTemplate": "編輯模板", - "startSession": "開始會話", - "saveChanges": "保存更改後再開始會話", - "startDiscussion": "使用此模板開始討論會話", - "templateTitle": "模板標題", - "mainTaskDesc": "主要任務描述", - "subtaskDesc": "子任務描述", - "addSubtask": "添加子任務", - "makePublic": "將模板設為公開", - "backToDashboard": "返回儀表板", - "unsavedChanges": "您有未保存的更改!", - "deleteTemplate": "刪除此模板", - "saveChangesButton": "保存更改", - "allChangesSaved": "所有更改已保存", - "deleteConfirmation": "您確定要刪除此模板嗎?", - "yesDelete": "是的,刪除它", - "noCancel": "不,取消", - "loadingTemplate": "載入模板...", - "taskDescription": "任務描述", - "Tsubtasks": "子任務", - "Tpublic": "公開", - "Tprivate": "私人", - "lastUpdated": "最後更新時間", - "viewOnGitHub": "在GitHub上查看", - "confirmEnd": "確定", - "dashboardTitle": "參與者狀態儀表板", - "loadingGroups": "載入群組...", - "noParticipantsInGroup": "此群組中沒有參與者" + "viewOnGitHub": "在GitHub上查看" } diff --git a/src/lib/components/Chatroom.svelte b/src/lib/components/Chatroom.svelte index 8019e42..b8b83de 100644 --- a/src/lib/components/Chatroom.svelte +++ b/src/lib/components/Chatroom.svelte @@ -3,7 +3,7 @@ import { Mic, Send, Square } from 'lucide-svelte'; // Added Square icon import import AudioPlayer from './AudioPlayer.svelte'; import { renderMarkdown } from '$lib/utils/renderMarkdown'; - import * as m from '$lib/paraglide/messages.js'; + import { language } from '$lib/stores/language'; // Import the global language store interface Conversation { name: string; @@ -36,6 +36,25 @@ let messagesContainer: HTMLDivElement; let dots = $state('...'); + const translations = { + en: { + placeholder: 'Type your message...(max 500 characters)', + send: 'Send', + record: 'Record', + waiting: 'Waiting', + stop: 'Stop', + thinking: 'Thinking' + }, + zh: { + placeholder: '手動輸入文字...(最多500個字元)', + send: '送出', + record: '錄音', + waiting: '等待', + stop: '停止', + thinking: '正在思考' + } + }; + function scrollToBottom() { if (!messagesContainer || !autoscroll) return; @@ -148,7 +167,7 @@

- {#await renderMarkdown(`${m.thinking()}${dots}`)} + {#await renderMarkdown(`${translations[$language].thinking}${dots}`)} Loading ... {:then content} @@ -168,7 +187,7 @@