diff --git a/src/i18n/index.ts b/src/i18n/index.ts
new file mode 100644
index 0000000..8da071b
--- /dev/null
+++ b/src/i18n/index.ts
@@ -0,0 +1,20 @@
+import { createI18n } from "vue-i18n";
+import zhCN from "./locales/zh-CN";
+import enUS from "./locales/en-US";
+import jaJP from "./locales/ja-JP";
+
+const messages = {
+ "zh-CN": zhCN,
+ "en-US": enUS,
+ "ja-JP": jaJP,
+};
+
+const i18n = createI18n({
+ locale: 'zh-CN',
+ fallbackLocale: "zh-CN",
+ messages,
+ legacy: false,
+ globalInjection: true,
+});
+
+export default i18n;
diff --git a/src/i18n/locales/en-US.ts b/src/i18n/locales/en-US.ts
new file mode 100644
index 0000000..a310657
--- /dev/null
+++ b/src/i18n/locales/en-US.ts
@@ -0,0 +1,219 @@
+export default {
+ common: {
+ confirm: 'Confirm',
+ cancel: 'Cancel',
+ copy: 'Copy',
+ delete: 'Delete',
+ create: 'Create',
+ save: 'Save',
+ edit: 'Edit',
+ close: 'Close',
+ rename: 'Rename',
+ refresh: 'Refresh',
+ download: 'Download',
+ send: 'Send',
+ receive: 'Receive',
+ share: 'Share',
+ connect: 'Connect',
+ connected: 'Connected',
+ connecting: 'Connecting...',
+ disconnect: 'Disconnect',
+ loading: 'Loading...',
+ noContent: 'No Content',
+ success: 'Success',
+ failed: 'Failed',
+ error: 'Error',
+ unknownError: 'Unknown Error',
+ pleaseWait: 'Please wait...',
+ inputPlaceholder: 'Please enter',
+ search: 'Search',
+ okText: 'OK',
+ cancelText: 'Cancel',
+ warning: 'Warning',
+ createSuccess: 'Created successfully',
+ deleteSuccess: 'Deleted successfully',
+ renameSuccess: 'Renamed successfully',
+ copySuccess: 'Copied successfully',
+ operationFailed: 'Operation failed',
+ },
+
+ fileView: {
+ parentDir: 'Parent Directory',
+ sortByName: 'By Name',
+ sortBySize: 'By Size',
+ sortByType: 'By Type',
+ sortByDate: 'By Date',
+ permissionSettings: 'Permission Settings',
+ initialize: 'Initialize',
+ selectDirHint: 'Please select a directory',
+ selectDirectory: 'Select Directory',
+ refresh: 'Refresh',
+ newFolder: 'New Folder',
+ newFile: 'New File',
+ delete: 'Delete',
+ rename: 'Rename',
+ download: 'Download',
+ selectLocalDir: 'Select Local Directory',
+ confirmDelete: 'Confirm Delete',
+ deleteConfirmContent: 'Are you sure to delete the following files?
{files}
Total {count} file(s)',
+ renameTitle: 'Rename',
+ inputNewName: 'Please enter a new name',
+ inputFolderName: 'Please enter folder name',
+ inputFileName: 'Please enter file name',
+ createFolderTitle: 'New Folder',
+ createFileTitle: 'New File',
+ warningInputFolderName: 'Please enter folder name',
+ warningInputFileName: 'Please enter file name',
+ deleteBtn: 'Delete',
+ cancelBtn: 'Cancel',
+ createBtn: 'Create',
+ },
+
+ fileReader: {
+ remoteTransfer: 'Remote Transfer',
+ browserDownload: 'Browser Download',
+ save: 'Save',
+ edit: 'Edit',
+ close: 'Close',
+ autoDetect: 'Auto Detect',
+ other: 'Other',
+ videoNotSupported: 'Your browser does not support video playback',
+ audioNotSupported: 'Your browser does not support audio playback',
+ fileTooLarge: 'File too large to preview, please transfer to view',
+ unsupportedType: 'Preview not supported for this file type',
+ openAsText: 'Open as Text',
+ downloadTitle: 'Download File',
+ downloadConfirm: 'Are you sure to download {name}?',
+ saveFailed: 'Failed to save file',
+ editor: 'Editor',
+ preview: 'Preview',
+ },
+
+ index: {
+ myId: 'My ID',
+ waitingForConnection: 'Waiting for connection...',
+ copy: 'Copy',
+ share: 'Share',
+ connectedBy: 'Connected By',
+ connected: 'Connected',
+ traffic: 'Traffic',
+ packets: 'Packets',
+ enterPeerId: 'Enter peer ID',
+ connect: 'Connect',
+ connectedBtn: 'Connected',
+ send: 'Send',
+ receive: 'Receive',
+ desktopPreview: 'Desktop Preview',
+ voiceCall: 'Voice Call',
+ camera: 'Camera',
+ linkCopied: 'Link Copied',
+ linkCopiedDesc: 'Successfully copied to clipboard',
+ idCopied: 'ID Copied',
+ idCopiedDesc: 'Successfully copied to clipboard',
+ idCopiedConnectDesc: 'Successfully copied to clipboard, ready to connect',
+ copyFailed: 'Copy failed',
+ notCompleted: 'Not Completed',
+ inDevelopment: 'In development...',
+ connectSuccess: 'Connected successfully',
+ newConnection: 'New connection appeared',
+ errorOccurred: 'An error occurred',
+ disconnected: 'Disconnected',
+ receiveFilesFailed: 'Failed to receive files',
+ kuraaFooter: 'kuraa',
+ shareUrl: 'Share Link',
+ },
+
+ clipboard: {
+ getRemoteClipboard: 'Get Remote Clipboard',
+ noContent: 'No Content',
+ fetchSuccess: 'Fetched successfully',
+ fetchFailed: 'Failed to fetch',
+ unknownError: 'Unknown Error',
+ },
+
+ transfer: {
+ title: 'Transfer List',
+ clear: 'Clear',
+ waiting: 'Waiting',
+ sending: 'Sending',
+ receiving: 'Receiving',
+ completed: 'Completed',
+ error: 'Error',
+ paused: 'Paused',
+ },
+
+ permission: {
+ title: 'Permission Settings',
+ edit: 'Edit Permission',
+ view: 'View Permission',
+ download: 'Download Permission',
+ desktop: 'Desktop Preview Permission',
+ call: 'Voice Call Permission',
+ camera: 'Camera Permission',
+ editDesc: 'Allow creating, modifying and deleting files and folders',
+ viewDesc: 'Allow viewing file contents and directory structure',
+ downloadDesc: 'Allow transferring files to local',
+ desktopDesc: 'Allow peer to request desktop preview',
+ callDesc: 'Allow peer to request voice call',
+ cameraDesc: 'Allow peer to request camera access',
+ },
+
+ desktop: {
+ remoteDesktop: 'Remote Desktop',
+ waitingForDesktop: 'Waiting for desktop sharing...',
+ endSharing: 'End Sharing',
+ collapseDesktop: 'Collapse Desktop',
+ expandDesktop: 'Expand Desktop',
+ soundOn: 'Sound On',
+ soundOff: 'Mute',
+ fullscreen: 'Fullscreen',
+ exitFullscreen: 'Exit',
+ enableSound: 'Enable Sound',
+ disableSound: 'Mute',
+ desktopBeingViewed: 'Desktop is being viewed',
+ peerViewingDesktop: 'Peer is viewing your desktop',
+ expandDesktopHint: 'Expand desktop preview hint',
+ remoteCamera: 'Remote Camera',
+ waitingForCamera: 'Waiting for camera feed...',
+ collapseCamera: 'Collapse Camera',
+ endCamera: 'End Camera',
+ expandCamera: 'Expand Camera',
+ cameraBeingViewed: 'Camera is being viewed',
+ peerViewingCamera: 'Peer is viewing your camera',
+ expandCameraHint: 'Expand camera preview hint',
+ cameraRequest: 'Camera Request',
+ voiceCallRequest: 'Voice Call Request',
+ peerRequestCamera: 'Peer requests to view your camera',
+ peerRequestCall: 'Peer requests a voice call',
+ reject: 'Reject',
+ accept: 'Accept',
+ voiceCall: 'Voice Call',
+ collapseCall: 'Collapse Call',
+ endCall: 'End Call',
+ inCall: 'In Call',
+ connecting: 'Connecting...',
+ unmute: 'Unmute',
+ mute: 'Mute',
+ expandCall: 'Expand Call',
+ },
+
+ voice: {
+ myId: 'My ID',
+ preparing: 'Preparing connection...',
+ ready: 'Ready',
+ inCall: 'In Call',
+ enterPeerId: 'Enter peer ID',
+ call: 'Call',
+ endCall: 'End Call',
+ unmute: 'Unmute',
+ mute: 'Mute',
+ delay: 'Delay',
+ copy: 'Copy',
+ cannotAccessMic: 'Cannot access microphone',
+ connectionError: 'Connection Error',
+ },
+
+ shader: {
+ uploadImageVideo: 'Upload Image/Video',
+ },
+}
diff --git a/src/i18n/locales/ja-JP.ts b/src/i18n/locales/ja-JP.ts
new file mode 100644
index 0000000..ba5df9b
--- /dev/null
+++ b/src/i18n/locales/ja-JP.ts
@@ -0,0 +1,219 @@
+export default {
+ common: {
+ confirm: '確認',
+ cancel: 'キャンセル',
+ copy: 'コピー',
+ delete: '削除',
+ create: '作成',
+ save: '保存',
+ edit: '編集',
+ close: '閉じる',
+ rename: '名前変更',
+ refresh: '更新',
+ download: 'ダウンロード',
+ send: '送信',
+ receive: '受信',
+ share: '共有',
+ connect: '接続',
+ connected: '接続済み',
+ connecting: '接続中...',
+ disconnect: '切断',
+ loading: '読み込み中...',
+ noContent: 'コンテンツなし',
+ success: '成功',
+ failed: '失敗',
+ error: 'エラー',
+ unknownError: '不明なエラー',
+ pleaseWait: 'しばらくお待ちください...',
+ inputPlaceholder: '入力してください',
+ search: '検索',
+ okText: '確認',
+ cancelText: 'キャンセル',
+ warning: '注意',
+ createSuccess: '作成しました',
+ deleteSuccess: '削除しました',
+ renameSuccess: '名前を変更しました',
+ copySuccess: 'コピーしました',
+ operationFailed: '操作に失敗しました',
+ },
+
+ fileView: {
+ parentDir: '親ディレクトリ',
+ sortByName: '名前順',
+ sortBySize: 'サイズ順',
+ sortByType: '種類順',
+ sortByDate: '日付順',
+ permissionSettings: '権限設定',
+ initialize: '初期化',
+ selectDirHint: 'ディレクトリを選択してください',
+ selectDirectory: 'ディレクトリを選択',
+ refresh: '更新',
+ newFolder: '新しいフォルダ',
+ newFile: '新しいファイル',
+ delete: '削除',
+ rename: '名前変更',
+ download: 'ダウンロード',
+ selectLocalDir: 'ローカルディレクトリを選択',
+ confirmDelete: '削除の確認',
+ deleteConfirmContent: '以下のファイルを削除してもよろしいですか?
{files}
合計 {count} 個のファイル',
+ renameTitle: '名前変更',
+ inputNewName: '新しい名前を入力してください',
+ inputFolderName: 'フォルダ名を入力してください',
+ inputFileName: 'ファイル名を入力してください',
+ createFolderTitle: '新しいフォルダ',
+ createFileTitle: '新しいファイル',
+ warningInputFolderName: 'フォルダ名を入力してください',
+ warningInputFileName: 'ファイル名を入力してください',
+ deleteBtn: '削除',
+ cancelBtn: 'キャンセル',
+ createBtn: '作成',
+ },
+
+ fileReader: {
+ remoteTransfer: 'リモート転送',
+ browserDownload: 'ブラウザダウンロード',
+ save: '保存',
+ edit: '編集',
+ close: '閉じる',
+ autoDetect: '自動検出',
+ other: 'その他',
+ videoNotSupported: 'お使いのブラウザは動画再生に対応していません',
+ audioNotSupported: 'お使いのブラウザは音声再生に対応していません',
+ fileTooLarge: 'ファイルが大きすぎるためプレビューできません。転送してご確認ください',
+ unsupportedType: 'このファイル形式はプレビューに対応していません',
+ openAsText: 'テキストとして開く',
+ downloadTitle: 'ファイルのダウンロード',
+ downloadConfirm: '{name}をダウンロードしてもよろしいですか?',
+ saveFailed: 'ファイルの保存に失敗しました',
+ editor: 'エディタ',
+ preview: 'プレビュー',
+ },
+
+ index: {
+ myId: 'マイID',
+ waitingForConnection: '接続を待っています...',
+ copy: 'コピー',
+ share: '共有',
+ connectedBy: '接続されました',
+ connected: '接続済み',
+ traffic: 'トラフィック',
+ packets: 'パケット数',
+ enterPeerId: '相手のIDを入力',
+ connect: '接続',
+ connectedBtn: '接続済み',
+ send: '送信',
+ receive: '受信',
+ desktopPreview: 'デスクトッププレビュー',
+ voiceCall: '音声通話',
+ camera: 'カメラ',
+ linkCopied: 'リンクをコピーしました',
+ linkCopiedDesc: 'クリップボードにコピーしました',
+ idCopied: 'IDをコピーしました',
+ idCopiedDesc: 'クリップボードにコピーしました',
+ idCopiedConnectDesc: 'クリップボードにコピーしました。接続に使用できます',
+ copyFailed: 'コピーに失敗しました',
+ notCompleted: '未完了',
+ inDevelopment: '開発中...',
+ connectSuccess: '接続しました',
+ newConnection: '新しい接続がありました',
+ errorOccurred: 'エラーが発生しました',
+ disconnected: '切断されました',
+ receiveFilesFailed: 'ファイルの受信に失敗しました',
+ kuraaFooter: 'kuraa',
+ shareUrl: 'リンクを共有',
+ },
+
+ clipboard: {
+ getRemoteClipboard: '相手のクリップボードを取得',
+ noContent: 'コンテンツなし',
+ fetchSuccess: '取得成功',
+ fetchFailed: '取得に失敗しました',
+ unknownError: '不明なエラー',
+ },
+
+ transfer: {
+ title: '転送リスト',
+ clear: 'クリア',
+ waiting: '待機中',
+ sending: '送信中',
+ receiving: '受信中',
+ completed: '完了',
+ error: 'エラー',
+ paused: '一時停止',
+ },
+
+ permission: {
+ title: '権限設定',
+ edit: '編集権限',
+ view: '閲覧権限',
+ download: 'ダウンロード権限',
+ desktop: 'デスクトッププレビュー権限',
+ call: '音声通話権限',
+ camera: 'カメラ権限',
+ editDesc: 'ファイルとフォルダの作成、変更、削除を許可',
+ viewDesc: 'ファイルの内容とディレクトリ構成の表示を許可',
+ downloadDesc: 'ローカルへのファイル転送を許可',
+ desktopDesc: '相手からのデスクトッププレビュー要求を許可',
+ callDesc: '相手からの音声通話要求を許可',
+ cameraDesc: '相手からのカメラアクセス要求を許可',
+ },
+
+ desktop: {
+ remoteDesktop: 'リモートデスクトップ',
+ waitingForDesktop: 'デスクトップ共有を待っています...',
+ endSharing: '共有を終了',
+ collapseDesktop: 'デスクトップを折りたたむ',
+ expandDesktop: 'デスクトップを展開',
+ soundOn: '音声ON',
+ soundOff: 'ミュート',
+ fullscreen: '全画面',
+ exitFullscreen: '終了',
+ enableSound: '音声を有効にする',
+ disableSound: 'ミュート',
+ desktopBeingViewed: 'デスクトップが表示されています',
+ peerViewingDesktop: '相手があなたのデスクトップを表示しています',
+ expandDesktopHint: 'デスクトッププレビューヒントを展開',
+ remoteCamera: 'リモートカメラ',
+ waitingForCamera: 'カメラ映像を待っています...',
+ collapseCamera: 'カメラを折りたたむ',
+ endCamera: 'カメラを終了',
+ expandCamera: 'カメラを展開',
+ cameraBeingViewed: 'カメラが表示されています',
+ peerViewingCamera: '相手があなたのカメラを表示しています',
+ expandCameraHint: 'カメラプレビューヒントを展開',
+ cameraRequest: 'カメラリクエスト',
+ voiceCallRequest: '音声通話リクエスト',
+ peerRequestCamera: '相手がカメラの表示を要求しています',
+ peerRequestCall: '相手が音声通話を要求しています',
+ reject: '拒否',
+ accept: '応答',
+ voiceCall: '音声通話',
+ collapseCall: '通話を折りたたむ',
+ endCall: '通話を終了',
+ inCall: '通話中',
+ connecting: '接続を確立しています...',
+ unmute: 'ミュート解除',
+ mute: 'ミュート',
+ expandCall: '通話を展開',
+ },
+
+ voice: {
+ myId: 'マイID',
+ preparing: '接続準備中...',
+ ready: '準備完了',
+ inCall: '通話中',
+ enterPeerId: '相手のIDを入力',
+ call: '発信',
+ endCall: '通話を終了',
+ unmute: 'ミュート解除',
+ mute: 'ミュート',
+ delay: '遅延時間',
+ copy: 'コピー',
+ cannotAccessMic: 'マイクにアクセスできません',
+ connectionError: '接続エラー',
+ },
+
+ shader: {
+ uploadImageVideo: '画像/動画をアップロード',
+ },
+}
diff --git a/src/i18n/locales/zh-CN.ts b/src/i18n/locales/zh-CN.ts
new file mode 100644
index 0000000..6769abd
--- /dev/null
+++ b/src/i18n/locales/zh-CN.ts
@@ -0,0 +1,219 @@
+export default {
+ common: {
+ confirm: '确定',
+ cancel: '取消',
+ copy: '复制',
+ delete: '删除',
+ create: '创建',
+ save: '保存',
+ edit: '编辑',
+ close: '关闭',
+ rename: '重命名',
+ refresh: '刷新',
+ download: '下载',
+ send: '发送',
+ receive: '接收',
+ share: '分享',
+ connect: '连接',
+ connected: '已连接',
+ connecting: '连接中...',
+ disconnect: '断开',
+ loading: '加载中...',
+ noContent: '暂无内容',
+ success: '成功',
+ failed: '失败',
+ error: '错误',
+ unknownError: '未知错误',
+ pleaseWait: '请稍后...',
+ inputPlaceholder: '请输入',
+ search: '搜索',
+ okText: '确定',
+ cancelText: '取消',
+ warning: '提示',
+ createSuccess: '创建成功',
+ deleteSuccess: '删除成功',
+ renameSuccess: '重命名成功',
+ copySuccess: '复制成功',
+ operationFailed: '操作失败',
+ },
+
+ fileView: {
+ parentDir: '上级目录',
+ sortByName: '按名称',
+ sortBySize: '按大小',
+ sortByType: '按类型',
+ sortByDate: '按日期',
+ permissionSettings: '权限设置',
+ initialize: '初始化',
+ selectDirHint: '请选择一个目录',
+ selectDirectory: '选择目录',
+ refresh: '刷新',
+ newFolder: '新建文件夹',
+ newFile: '新建文件',
+ delete: '删除',
+ rename: '重命名',
+ download: '下载',
+ selectLocalDir: '选择本地目录',
+ confirmDelete: '确认删除',
+ deleteConfirmContent: '确定要删除以下文件吗?
{files}
共 {count} 个文件',
+ renameTitle: '重命名',
+ inputNewName: '请输入新的名称',
+ inputFolderName: '请输入文件夹名称',
+ inputFileName: '请输入文件名称',
+ createFolderTitle: '新建文件夹',
+ createFileTitle: '新建文件',
+ warningInputFolderName: '请输入文件夹名称',
+ warningInputFileName: '请输入文件名称',
+ deleteBtn: '删除',
+ cancelBtn: '取消',
+ createBtn: '创建',
+ },
+
+ fileReader: {
+ remoteTransfer: '远程传输',
+ browserDownload: '浏览器下载',
+ save: '保存',
+ edit: '编辑',
+ close: '关闭',
+ autoDetect: '自动检测',
+ other: '其他',
+ videoNotSupported: '您的浏览器不支持视频播放',
+ audioNotSupported: '您的浏览器不支持音频播放',
+ fileTooLarge: '文件过大,无法预览,请传输后查看',
+ unsupportedType: '不支持预览该类型的文件',
+ openAsText: '以文本打开',
+ downloadTitle: '下载文件',
+ downloadConfirm: '确定要下载{name}吗?',
+ saveFailed: '保存文件失败',
+ editor: '编辑器',
+ preview: '预览',
+ },
+
+ index: {
+ myId: '我的ID',
+ waitingForConnection: '等待连接...',
+ copy: '复制',
+ share: '分享',
+ connectedBy: '被连接',
+ connected: '已连接',
+ traffic: '流量',
+ packets: '包数',
+ enterPeerId: '输入对方ID',
+ connect: '连接',
+ connectedBtn: '已连接',
+ send: '发送',
+ receive: '接收',
+ desktopPreview: '桌面预览',
+ voiceCall: '语音通话',
+ camera: '摄像头',
+ linkCopied: '链接已复制',
+ linkCopiedDesc: '已成功复制到剪贴板',
+ idCopied: 'ID已复制',
+ idCopiedDesc: '已成功复制到剪贴板',
+ idCopiedConnectDesc: '已成功复制到剪贴板,可用于发起连接',
+ copyFailed: '复制失败',
+ notCompleted: '未完成',
+ inDevelopment: '开发中...',
+ connectSuccess: '连接成功',
+ newConnection: '出现新的连接',
+ errorOccurred: '发生错误',
+ disconnected: '连接已断开',
+ receiveFilesFailed: '接收文件失败',
+ kuraaFooter: 'kuraa',
+ shareUrl: '分享链接',
+ },
+
+ clipboard: {
+ getRemoteClipboard: '获取对方粘贴板',
+ noContent: '暂无内容',
+ fetchSuccess: '获取成功',
+ fetchFailed: '获取失败',
+ unknownError: '未知错误',
+ },
+
+ transfer: {
+ title: '传输列表',
+ clear: '清理',
+ waiting: '等待中',
+ sending: '发送中',
+ receiving: '接收中',
+ completed: '已完成',
+ error: '失败',
+ paused: '已暂停',
+ },
+
+ permission: {
+ title: '权限设置',
+ edit: '编辑权限',
+ view: '查看权限',
+ download: '下载权限',
+ desktop: '桌面预览权限',
+ call: '语音通话权限',
+ camera: '摄像头权限',
+ editDesc: '允许创建、修改、删除文件和文件夹',
+ viewDesc: '允许查看文件内容和目录结构',
+ downloadDesc: '允许传输文件到本地',
+ desktopDesc: '允许对方请求预览当前桌面',
+ callDesc: '允许对方请求语音通话',
+ cameraDesc: '允许对方请求查看当前摄像头',
+ },
+
+ desktop: {
+ remoteDesktop: '远程桌面',
+ waitingForDesktop: '等待桌面共享...',
+ endSharing: '结束共享',
+ collapseDesktop: '收起桌面',
+ expandDesktop: '展开桌面',
+ soundOn: '出声',
+ soundOff: '静音',
+ fullscreen: '全屏',
+ exitFullscreen: '退出',
+ enableSound: '开启声音',
+ disableSound: '静音',
+ desktopBeingViewed: '桌面正在被预览',
+ peerViewingDesktop: '对方正在查看你的桌面',
+ expandDesktopHint: '展开桌面预览提示',
+ remoteCamera: '远程摄像头',
+ waitingForCamera: '等待摄像头画面...',
+ collapseCamera: '收起摄像头',
+ endCamera: '结束摄像头',
+ expandCamera: '展开摄像头',
+ cameraBeingViewed: '摄像头正在被预览',
+ peerViewingCamera: '对方正在查看你的摄像头',
+ expandCameraHint: '展开摄像头预览提示',
+ cameraRequest: '摄像头请求',
+ voiceCallRequest: '语音通话请求',
+ peerRequestCamera: '对方请求查看摄像头',
+ peerRequestCall: '对方请求语音通话',
+ reject: '拒绝',
+ accept: '接听',
+ voiceCall: '语音通话',
+ collapseCall: '收起通话',
+ endCall: '结束通话',
+ inCall: '通话中',
+ connecting: '正在建立连接...',
+ unmute: '取消静音',
+ mute: '静音',
+ expandCall: '展开通话',
+ },
+
+ voice: {
+ myId: '我的ID',
+ preparing: '准备连接...',
+ ready: '准备就绪',
+ inCall: '通话中',
+ enterPeerId: '输入对方的ID',
+ call: '呼叫',
+ endCall: '结束通话',
+ unmute: '取消静音',
+ mute: '静音',
+ delay: '延迟时间',
+ copy: '复制',
+ cannotAccessMic: '无法访问麦克风',
+ connectionError: '连接错误',
+ },
+
+ shader: {
+ uploadImageVideo: '上传图片/视频',
+ },
+}
diff --git a/src/main.ts b/src/main.ts
index a28e35e..14f903f 100644
--- a/src/main.ts
+++ b/src/main.ts
@@ -3,6 +3,7 @@ import App from './App.vue'
import 'ant-design-vue/dist/reset.css';
import Antd from 'ant-design-vue';
import router from './router/router';
+import i18n from './i18n';
import { registerSW } from 'virtual:pwa-register'
import { isPwa, showPwaInstallPrompt } from './utils/pwa';
@@ -25,4 +26,5 @@ const updateSW = registerSW({
const app = createApp(App);
app.use(Antd);
app.use(router);
+app.use(i18n);
app.mount('#app')
diff --git a/src/pages/file/index.vue b/src/pages/file/index.vue
index 5fb14ad..4f64943 100644
--- a/src/pages/file/index.vue
+++ b/src/pages/file/index.vue
@@ -4,84 +4,127 @@