From 570d6aeaf12e39b182c92c2d007835b3bbaee2d8 Mon Sep 17 00:00:00 2001 From: kangfenmao Date: Tue, 18 Mar 2025 16:34:13 +0800 Subject: [PATCH] feat(i18n): add support for pasted text and images in message attachments across multiple languages - Introduced new translations for "Pasted Text" and "Pasted Image" in English, Japanese, Russian, Simplified Chinese, and Traditional Chinese. - Updated FileManager to format file names based on their type, enhancing user experience when handling pasted content. --- src/renderer/src/i18n/locales/en-us.json | 4 ++++ src/renderer/src/i18n/locales/ja-jp.json | 4 ++++ src/renderer/src/i18n/locales/ru-ru.json | 4 ++++ src/renderer/src/i18n/locales/zh-cn.json | 4 ++++ src/renderer/src/i18n/locales/zh-tw.json | 4 ++++ src/renderer/src/pages/files/FilesPage.tsx | 2 +- .../home/Messages/MessageAttachments.tsx | 2 +- src/renderer/src/services/FileManager.ts | 20 +++++++++++++++++++ 8 files changed, 42 insertions(+), 2 deletions(-) diff --git a/src/renderer/src/i18n/locales/en-us.json b/src/renderer/src/i18n/locales/en-us.json index 065bf80e..9af11bc7 100644 --- a/src/renderer/src/i18n/locales/en-us.json +++ b/src/renderer/src/i18n/locales/en-us.json @@ -400,6 +400,10 @@ "title": "Mermaid Diagram" }, "message": { + "attachments": { + "pasted_text": "Pasted Text", + "pasted_image": "Pasted Image" + }, "api.check.model.title": "Select the model to use for detection", "api.connection.failed": "Connection failed", "api.connection.success": "Connection successful", diff --git a/src/renderer/src/i18n/locales/ja-jp.json b/src/renderer/src/i18n/locales/ja-jp.json index 3119ce92..a97df623 100644 --- a/src/renderer/src/i18n/locales/ja-jp.json +++ b/src/renderer/src/i18n/locales/ja-jp.json @@ -400,6 +400,10 @@ "title": "Mermaid図" }, "message": { + "attachments": { + "pasted_text": "クリップボードファイル", + "pasted_image": "クリップボード画像" + }, "api.check.model.title": "検出に使用するモデルを選択してください", "api.connection.failed": "接続に失敗しました", "api.connection.success": "接続に成功しました", diff --git a/src/renderer/src/i18n/locales/ru-ru.json b/src/renderer/src/i18n/locales/ru-ru.json index 8e3e8b24..bda4f0d5 100644 --- a/src/renderer/src/i18n/locales/ru-ru.json +++ b/src/renderer/src/i18n/locales/ru-ru.json @@ -406,6 +406,10 @@ "title": "GPUStack" }, "message": { + "attachments": { + "pasted_text": "Вырезанный текст", + "pasted_image": "Вырезанное изображение" + }, "api.check.model.title": "Выберите модель для проверки", "api.connection.failed": "Соединение не удалось", "api.connection.success": "Соединение успешно", diff --git a/src/renderer/src/i18n/locales/zh-cn.json b/src/renderer/src/i18n/locales/zh-cn.json index 1289fcee..8f0b87c9 100644 --- a/src/renderer/src/i18n/locales/zh-cn.json +++ b/src/renderer/src/i18n/locales/zh-cn.json @@ -400,6 +400,10 @@ "title": "Mermaid 图表" }, "message": { + "attachments": { + "pasted_text": "剪切板文件", + "pasted_image": "剪切板图片" + }, "api.check.model.title": "请选择要检测的模型", "api.connection.failed": "连接失败", "api.connection.success": "连接成功", diff --git a/src/renderer/src/i18n/locales/zh-tw.json b/src/renderer/src/i18n/locales/zh-tw.json index b1808cb3..9aa945b3 100644 --- a/src/renderer/src/i18n/locales/zh-tw.json +++ b/src/renderer/src/i18n/locales/zh-tw.json @@ -400,6 +400,10 @@ "title": "Mermaid 圖表" }, "message": { + "attachments": { + "pasted_text": "剪切板文件", + "pasted_image": "剪切板圖片" + }, "api.check.model.title": "請選擇要偵測的模型", "api.connection.failed": "連接失敗", "api.connection.success": "連接成功", diff --git a/src/renderer/src/pages/files/FilesPage.tsx b/src/renderer/src/pages/files/FilesPage.tsx index 92a0e43b..4ad8f731 100644 --- a/src/renderer/src/pages/files/FilesPage.tsx +++ b/src/renderer/src/pages/files/FilesPage.tsx @@ -118,7 +118,7 @@ const FilesPage: FC = () => { key: file.id, file: ( window.api.file.openPath(file.path)}> - {file.origin_name} + {FileManager.formatFileName(file)} ), size: formatFileSize(file.size), diff --git a/src/renderer/src/pages/home/Messages/MessageAttachments.tsx b/src/renderer/src/pages/home/Messages/MessageAttachments.tsx index a6362b89..c76f100d 100644 --- a/src/renderer/src/pages/home/Messages/MessageAttachments.tsx +++ b/src/renderer/src/pages/home/Messages/MessageAttachments.tsx @@ -30,7 +30,7 @@ const MessageAttachments: FC = ({ message }) => { uid: file.id, url: 'file://' + FileManager.getSafePath(file), status: 'done', - name: file.origin_name + name: FileManager.formatFileName(file) }))} /> diff --git a/src/renderer/src/services/FileManager.ts b/src/renderer/src/services/FileManager.ts index 494a3108..e99e3c89 100644 --- a/src/renderer/src/services/FileManager.ts +++ b/src/renderer/src/services/FileManager.ts @@ -1,7 +1,9 @@ import db from '@renderer/databases' +import i18n from '@renderer/i18n' import store from '@renderer/store' import { FileType } from '@renderer/types' import { getFileDirectory } from '@renderer/utils' +import dayjs from 'dayjs' class FileManager { static async selectFiles(options?: Electron.OpenDialogOptions): Promise { @@ -110,6 +112,24 @@ class FileManager { await db.files.update(file.id, file) } + + static formatFileName(file: FileType) { + if (!file || !file.origin_name) { + return '' + } + + const date = dayjs(file.created_at).format('YYYY-MM-DD') + + if (file.origin_name.includes('pasted_text')) { + return date + ' ' + i18n.t('message.attachments.pasted_text') + file.ext + } + + if (file.origin_name.startsWith('temp_file') && file.origin_name.includes('image')) { + return date + ' ' + i18n.t('message.attachments.pasted_image') + file.ext + } + + return file.origin_name + } } export default FileManager