diff --git a/frontend/src/components/DocumentPagination.tsx b/frontend/src/components/DocumentPagination.tsx index f02ef1c0..6958d051 100644 --- a/frontend/src/components/DocumentPagination.tsx +++ b/frontend/src/components/DocumentPagination.tsx @@ -1,4 +1,5 @@ import React, { useState } from 'react'; +import { useTranslation } from 'react-i18next'; import SingleArrowLeft from '../assets/single-left-arrow.svg'; import SingleArrowRight from '../assets/single-right-arrow.svg'; import DoubleArrowLeft from '../assets/double-arrow-left.svg'; @@ -19,6 +20,7 @@ const Pagination: React.FC = ({ onPageChange, onRowsPerPageChange, }) => { + const { t } = useTranslation(); const [isDropdownOpen, setIsDropdownOpen] = useState(false); const rowsPerPageOptions = [5, 10, 20, 50]; @@ -53,7 +55,9 @@ const Pagination: React.FC = ({
{/* Rows per page dropdown */}
- Rows per page: + + {t('pagination.rowsPerPage')}: +
@@ -108,7 +112,7 @@ const Pagination: React.FC = ({ > Previous page @@ -119,7 +123,7 @@ const Pagination: React.FC = ({ > Next page @@ -130,7 +134,7 @@ const Pagination: React.FC = ({ > Last page diff --git a/frontend/src/locale/en.json b/frontend/src/locale/en.json index 7be4b568..2f21445b 100644 --- a/frontend/src/locale/en.json +++ b/frontend/src/locale/en.json @@ -83,7 +83,9 @@ "tokenUsage": "Token Usage", "feedback": "Feedback", "filterPlaceholder": "Filter", - "none": "None" + "none": "None", + "positiveFeedback": "Positive Feedback", + "negativeFeedback": "Negative Feedback" }, "logs": { "label": "Logs", @@ -93,7 +95,12 @@ "tableHeader": "API generated / chatbot conversations" }, "tools": { - "label": "Tools" + "label": "Tools", + "searchPlaceholder": "Search...", + "addTool": "Add Tool", + "noToolsAlt": "No tools found", + "noToolsFound": "No tools found", + "selectToolSetup": "Select a tool to set up" } }, "modals": { @@ -150,6 +157,24 @@ "note": "Source document, personal information and further conversation will remain private", "create": "Create", "option": "Allow users to prompt further" + }, + "configTool": { + "title": "Tool Config", + "type": "Type", + "apiKeyLabel": "API Key / OAuth", + "apiKeyPlaceholder": "Enter API Key / OAuth", + "addButton": "Add Tool", + "closeButton": "Close" + }, + "prompts": { + "addPrompt": "Add Prompt", + "addDescription": "Add your custom prompt and save it to DocsGPT", + "editPrompt": "Edit Prompt", + "editDescription": "Edit your custom prompt and save it to DocsGPT", + "promptName": "Prompt Name", + "promptText": "Prompt Text", + "save": "Save", + "nameExists": "Name already exists" } }, "sharedConv": { @@ -162,5 +187,13 @@ "delete": "Delete", "rename": "Rename", "deleteWarning": "Are you sure you want to delete this conversation?" + }, + "pagination": { + "rowsPerPage": "Rows per page", + "pageOf": "Page {{currentPage}} of {{totalPages}}", + "firstPage": "First page", + "previousPage": "Previous page", + "nextPage": "Next page", + "lastPage": "Last page" } } diff --git a/frontend/src/locale/es.json b/frontend/src/locale/es.json index d2c087db..8d0a3273 100644 --- a/frontend/src/locale/es.json +++ b/frontend/src/locale/es.json @@ -83,7 +83,9 @@ "tokenUsage": "Uso de Tokens", "feedback": "Retroalimentación", "filterPlaceholder": "Filtrar", - "none": "Ninguno" + "none": "Ninguno", + "positiveFeedback": "Retroalimentación Positiva", + "negativeFeedback": "Retroalimentación Negativa" }, "logs": { "label": "Registros", @@ -150,6 +152,14 @@ "note": "El documento original, la información personal y las conversaciones posteriores permanecerán privadas", "create": "Crear", "option": "Permitir a los usuarios realizar más consultas" + }, + "configTool": { + "title": "Configuración de la Herramienta", + "type": "Tipo", + "apiKeyLabel": "Clave API / OAuth", + "apiKeyPlaceholder": "Ingrese la Clave API / OAuth", + "addButton": "Agregar Herramienta", + "closeButton": "Cerrar" } }, "sharedConv": { @@ -162,5 +172,13 @@ "delete": "Eliminar", "rename": "Renombrar", "deleteWarning": "¿Está seguro de que desea eliminar esta conversación?" + }, + "pagination": { + "rowsPerPage": "Filas por página", + "pageOf": "Página {{currentPage}} de {{totalPages}}", + "firstPage": "Primera página", + "previousPage": "Página anterior", + "nextPage": "Página siguiente", + "lastPage": "Última página" } } diff --git a/frontend/src/locale/jp.json b/frontend/src/locale/jp.json index 71aa1e15..e1e27503 100644 --- a/frontend/src/locale/jp.json +++ b/frontend/src/locale/jp.json @@ -58,15 +58,15 @@ "date": "ベクトル日付", "type": "タイプ", "tokenUsage": "トークン使用量", - "noData": "既存のドキュメントはありません" + "noData": "既存のドキュメントがありません" }, "apiKeys": { - "label": "チャットボット", + "label": "APIキー", "name": "名前", "key": "APIキー", "sourceDoc": "ソースドキュメント", "createNew": "新規作成", - "noData": "既存のチャットボットはありません" + "noData": "既存のAPIキーがありません" }, "analytics": { "label": "分析", @@ -74,26 +74,33 @@ "selectChatbot": "チャットボットを選択", "filterOptions": { "hour": "時間", - "last24Hours": "24時間", - "last7Days": "7日間", - "last15Days": "15日間", - "last30Days": "30日間" + "last24Hours": "過去24時間", + "last7Days": "過去7日間", + "last15Days": "過去15日間", + "last30Days": "過去30日間" }, "messages": "メッセージ", "tokenUsage": "トークン使用量", "feedback": "フィードバック", "filterPlaceholder": "フィルター", - "none": "なし" + "none": "なし", + "positiveFeedback": "肯定的なフィードバック", + "negativeFeedback": "否定的なフィードバック" }, "logs": { "label": "ログ", "filterByChatbot": "チャットボットでフィルター", "selectChatbot": "チャットボットを選択", "none": "なし", - "tableHeader": "API生成/チャットボットの会話" + "tableHeader": "API生成 / チャットボットの会話" }, "tools": { - "label": "ツール" + "label": "ツール", + "searchPlaceholder": "検索...", + "addTool": "ツールを追加", + "noToolsAlt": "ツールが見つかりません", + "noToolsFound": "ツールが見つかりません", + "selectToolSetup": "設定するツールを選択してください" } }, "modals": { @@ -150,6 +157,24 @@ "note": "ソースドキュメント、個人情報、および以降の会話は非公開のままになります", "create": "作成", "option": "ユーザーがより多くのクエリを実行できるようにします。" + }, + "configTool": { + "title": "ツール設定", + "type": "タイプ", + "apiKeyLabel": "APIキー / OAuth", + "apiKeyPlaceholder": "APIキー / OAuthを入力してください", + "addButton": "ツールを追加", + "closeButton": "閉じる" + }, + "prompts": { + "addPrompt": "プロンプトを追加", + "addDescription": "カスタムプロンプトを追加してDocsGPTに保存", + "editPrompt": "プロンプトを編集", + "editDescription": "カスタムプロンプトを編集してDocsGPTに保存", + "promptName": "プロンプト名", + "promptText": "プロンプトテキスト", + "save": "保存", + "nameExists": "名前が既に存在します" } }, "sharedConv": { @@ -162,5 +187,13 @@ "delete": "削除", "rename": "名前変更", "deleteWarning": "この会話を削除してもよろしいですか?" + }, + "pagination": { + "rowsPerPage": "1ページあたりの行数", + "pageOf": "ページ {{currentPage}} / {{totalPages}}", + "firstPage": "最初のページ", + "previousPage": "前のページ", + "nextPage": "次のページ", + "lastPage": "最後のページ" } } diff --git a/frontend/src/locale/ru.json b/frontend/src/locale/ru.json index c5e3deb8..f2eb2e87 100644 --- a/frontend/src/locale/ru.json +++ b/frontend/src/locale/ru.json @@ -10,6 +10,9 @@ "sourceDocs": "Источник", "none": "Нет", "cancel": "Отмена", + "help": "Помощь", + "emailUs": "Напишите нам", + "documentation": "Документация", "demo": [ { "header": "Узнайте о DocsGPT", @@ -34,7 +37,7 @@ "label": "Общие", "selectTheme": "Выбрать тему", "light": "Светлая", - "dark": "Темная", + "dark": "Тёмная", "selectLanguage": "Выбрать язык", "chunks": "Обработанные фрагменты на запрос", "prompt": "Активная подсказка", @@ -47,7 +50,7 @@ "medium": "Средний", "high": "Высокий", "unlimited": "Без ограничений", - "default": "по умолчанию" + "default": "По умолчанию" }, "documents": { "label": "Документы", @@ -58,12 +61,12 @@ "noData": "Нет существующих документов" }, "apiKeys": { - "label": "Чат-боты", + "label": "API ключи", "name": "Название", - "key": "Ключ API", - "sourceDoc": "Исходный документ", + "key": "API ключ", + "sourceDoc": "Источник документа", "createNew": "Создать новый", - "noData": "Нет существующих чат-ботов" + "noData": "Нет существующих API ключей" }, "analytics": { "label": "Аналитика", @@ -71,52 +74,59 @@ "selectChatbot": "Выбрать чат-бота", "filterOptions": { "hour": "Час", - "last24Hours": "24 часа", - "last7Days": "7 дней", - "last15Days": "15 дней", - "last30Days": "30 дней" + "last24Hours": "Последние 24 часа", + "last7Days": "Последние 7 дней", + "last15Days": "Последние 15 дней", + "last30Days": "Последние 30 дней" }, "messages": "Сообщения", - "tokenUsage": "Использование токенов", + "tokenUsage": "Использование токена", "feedback": "Обратная связь", "filterPlaceholder": "Фильтр", - "none": "Нет" + "none": "Нет", + "positiveFeedback": "Положительная обратная связь", + "negativeFeedback": "Отрицательная обратная связь" }, "logs": { "label": "Журналы", "filterByChatbot": "Фильтровать по чат-боту", "selectChatbot": "Выбрать чат-бота", "none": "Нет", - "tableHeader": "Сгенерированные API / разговоры с чат-ботом" + "tableHeader": "API сгенерировано / разговоры с чат-ботом" }, "tools": { - "label": "Инструменты" + "label": "Инструменты", + "searchPlaceholder": "Поиск...", + "addTool": "Добавить инструмент", + "noToolsAlt": "Инструменты не найдены", + "noToolsFound": "Инструменты не найдены", + "selectToolSetup": "Выберите инструмент для настройки" } }, "modals": { "uploadDoc": { - "label": "Загрузить новую документацию", + "label": "Загрузить новый документ", "select": "Выберите способ загрузки документа в DocsGPT", "file": "Загрузить с устройства", "back": "Назад", - "wait": "Пожалуйста, подождите ...", + "wait": "Пожалуйста, подождите...", "remote": "Собрать с веб-сайта", "start": "Начать чат", "name": "Имя", "choose": "Выбрать файлы", - "info": "Загрузите .pdf, .txt, .rst, .csv, .xlsx, .docx, .md, .html, .epub, .json, .pptx, .zip с ограничением до 25 МБ", + "info": "Пожалуйста, загрузите файлы .pdf, .txt, .rst, .csv, .xlsx, .docx, .md, .html, .epub, .json, .pptx, .zip размером до 25 МБ", "uploadedFiles": "Загруженные файлы", "cancel": "Отмена", "train": "Обучение", "link": "Ссылка", "urlLink": "URL-ссылка", - "repoUrl": "URL-адрес репозитория", + "repoUrl": "URL репозитория", "reddit": { "id": "ID клиента", "secret": "Секрет клиента", - "agent": "Агент пользователя", + "agent": "Пользовательский агент", "searchQueries": "Поисковые запросы", - "numberOfPosts": "Количество постов" + "numberOfPosts": "Количество сообщений" }, "drag": { "title": "Загрузить исходный файл", @@ -124,16 +134,16 @@ } }, "createAPIKey": { - "label": "Создать новый ключ API", - "apiKeyName": "Название ключа API", + "label": "Создать новый API ключ", + "apiKeyName": "Название API ключа", "chunks": "Обработанные фрагменты на запрос", - "prompt": "Выбрать активный запрос", - "sourceDoc": "Исходный документ", + "prompt": "Выбрать активную подсказку", + "sourceDoc": "Источник документа", "create": "Создать" }, "saveKey": { - "note": "Пожалуйста, сохраните свой ключ", - "disclaimer": "Это единственный раз, когда будет показан ваш ключ", + "note": "Пожалуйста, сохраните ваш ключ", + "disclaimer": "Ваш ключ будет показан только один раз.", "copy": "Копировать", "copied": "Скопировано", "confirm": "Я сохранил ключ" @@ -143,21 +153,47 @@ "delete": "Удалить" }, "shareConv": { - "label": "Создать публичную страницу для общего доступа", - "note": "Исходный документ, личная информация и дальнейший разговор останутся конфиденциальными", + "label": "Создать публичную страницу для совместного использования", + "note": "Исходный документ, личная информация и последующие разговоры останутся приватными", "create": "Создать", - "option": "Разрешить пользователям делать дополнительные запросы" + "option": "Позволить пользователям делать дополнительные запросы." + }, + "configTool": { + "title": "Настройка инструмента", + "type": "Тип", + "apiKeyLabel": "API ключ / OAuth", + "apiKeyPlaceholder": "Введите API ключ / OAuth", + "addButton": "Добавить инструмент", + "closeButton": "Закрыть" + }, + "prompts": { + "addPrompt": "Добавить подсказку", + "addDescription": "Добавить вашу пользовательскую подсказку и сохранить её в DocsGPT", + "editPrompt": "Редактировать подсказку", + "editDescription": "Редактировать вашу пользовательскую подсказку и сохранить её в DocsGPT", + "promptName": "Название подсказки", + "promptText": "Текст подсказки", + "save": "Сохранить", + "nameExists": "Название уже существует" } }, "sharedConv": { "subtitle": "Создано с помощью", "button": "Начать работу с DocsGPT", - "meta": "DocsGPT использует GenAI, пожалуйста, проверяйте важную информацию, используя источники" + "meta": "DocsGPT использует GenAI, пожалуйста, проверьте важную информацию, используя источники." }, "convTile": { "share": "Поделиться", "delete": "Удалить", "rename": "Переименовать", "deleteWarning": "Вы уверены, что хотите удалить этот разговор?" + }, + "pagination": { + "rowsPerPage": "Строк на странице", + "pageOf": "Страница {{currentPage}} из {{totalPages}}", + "firstPage": "Первая страница", + "previousPage": "Предыдущая страница", + "nextPage": "Следующая страница", + "lastPage": "Последняя страница" } } diff --git a/frontend/src/locale/zh-TW.json b/frontend/src/locale/zh-TW.json index 5e97d883..a2bba823 100644 --- a/frontend/src/locale/zh-TW.json +++ b/frontend/src/locale/zh-TW.json @@ -57,14 +57,16 @@ "name": "文件名稱", "date": "向量日期", "type": "類型", - "tokenUsage": "Token 使用量" + "tokenUsage": "Token 使用量", + "noData": "沒有現有的文件" }, "apiKeys": { - "label": "API 金鑰", + "label": "聊天機器人", "name": "名稱", "key": "API 金鑰", "sourceDoc": "來源文件", - "createNew": "新增" + "createNew": "新增", + "noData": "沒有現有的聊天機器人" }, "analytics": { "label": "分析", @@ -81,7 +83,9 @@ "tokenUsage": "Token 使用量", "feedback": "回饋", "filterPlaceholder": "篩選", - "none": "無" + "none": "無", + "positiveFeedback": "正向回饋", + "negativeFeedback": "負向回饋" }, "logs": { "label": "日誌", @@ -91,22 +95,32 @@ "tableHeader": "API 生成 / 聊天機器人會話" }, "tools": { - "label": "工具" + "label": "工具", + "searchPlaceholder": "搜尋...", + "addTool": "新增工具", + "noToolsAlt": "找不到工具", + "noToolsFound": "找不到工具", + "selectToolSetup": "選擇要設定的工具" } }, "modals": { "uploadDoc": { "label": "上傳新文件", + "select": "選擇如何將文件上傳到 DocsGPT", "file": "從檔案", "remote": "遠端", + "back": "返回", + "wait": "請稍候...", + "start": "開始對話", "name": "名稱", "choose": "選擇檔案", - "info": "請上傳 .pdf, .txt, .rst, .docx, .md, .json, .pptx, .zip 檔案,大小限制為 25MB", + "info": "請上傳 .pdf, .txt, .rst, .csv, .xlsx, .docx, .md, .html, .epub, .json, .pptx, .zip 檔案,大小限制為 25MB", "uploadedFiles": "已上傳的檔案", "cancel": "取消", "train": "訓練", "link": "連結", "urlLink": "URL 連結", + "repoUrl": "儲存庫 URL", "reddit": { "id": "用戶端 ID", "secret": "用戶端金鑰", @@ -141,7 +155,26 @@ "shareConv": { "label": "建立公開頁面以分享", "note": "來源文件、個人資訊和後續對話將保持私密", - "create": "建立" + "create": "建立", + "option": "允許使用者進行更多查詢" + }, + "configTool": { + "title": "工具設定", + "type": "類型", + "apiKeyLabel": "API 金鑰 / OAuth", + "apiKeyPlaceholder": "輸入 API 金鑰 / OAuth", + "addButton": "新增工具", + "closeButton": "關閉" + }, + "prompts": { + "addPrompt": "新增提示", + "addDescription": "新增自定義提示並儲存到 DocsGPT", + "editPrompt": "編輯提示", + "editDescription": "編輯自定義提示並儲存到 DocsGPT", + "promptName": "提示名稱", + "promptText": "提示文字", + "save": "儲存", + "nameExists": "名稱已存在" } }, "sharedConv": { @@ -154,5 +187,13 @@ "delete": "刪除", "rename": "重新命名", "deleteWarning": "您確定要刪除這個對話嗎?" + }, + "pagination": { + "rowsPerPage": "每頁行數", + "pageOf": "第 {{currentPage}} 頁,共 {{totalPages}} 頁", + "firstPage": "第一頁", + "previousPage": "上一頁", + "nextPage": "下一頁", + "lastPage": "最後一頁" } } diff --git a/frontend/src/locale/zh.json b/frontend/src/locale/zh.json index afa15f7b..0ca94fe2 100644 --- a/frontend/src/locale/zh.json +++ b/frontend/src/locale/zh.json @@ -83,7 +83,9 @@ "tokenUsage": "令牌使用", "feedback": "反馈", "filterPlaceholder": "筛选", - "none": "无" + "none": "无", + "positiveFeedback": "正向反馈", + "negativeFeedback": "负向反馈" }, "logs": { "label": "日志", @@ -93,7 +95,12 @@ "tableHeader": "API 生成 / 聊天机器人会话" }, "tools": { - "label": "工具" + "label": "工具", + "searchPlaceholder": "搜索...", + "addTool": "添加工具", + "noToolsAlt": "未找到工具", + "noToolsFound": "未找到工具", + "selectToolSetup": "选择要设置的工具" } }, "modals": { @@ -150,6 +157,24 @@ "note": "源文档、个人信息和后续对话将保持私密", "create": "创建", "option": "允许用户进行更多查询。" + }, + "configTool": { + "title": "工具配置", + "type": "类型", + "apiKeyLabel": "API 密钥 / OAuth", + "apiKeyPlaceholder": "输入 API 密钥 / OAuth", + "addButton": "添加工具", + "closeButton": "关闭" + }, + "prompts": { + "addPrompt": "添加提示", + "addDescription": "添加自定义提示并保存到 DocsGPT", + "editPrompt": "编辑提示", + "editDescription": "编辑自定义提示并保存到 DocsGPT", + "promptName": "提示名称", + "promptText": "提示文本", + "save": "保存", + "nameExists": "名称已存在" } }, "sharedConv": { @@ -162,5 +187,13 @@ "delete": "删除", "rename": "重命名", "deleteWarning": "您确定要删除此对话吗?" + }, + "pagination": { + "rowsPerPage": "每页行数", + "pageOf": "第 {{currentPage}} 页,共 {{totalPages}} 页", + "firstPage": "第一页", + "previousPage": "上一页", + "nextPage": "下一页", + "lastPage": "最后一页" } } diff --git a/frontend/src/modals/ConfigToolModal.tsx b/frontend/src/modals/ConfigToolModal.tsx index 96bb15be..4a8ca881 100644 --- a/frontend/src/modals/ConfigToolModal.tsx +++ b/frontend/src/modals/ConfigToolModal.tsx @@ -1,4 +1,5 @@ import React from 'react'; +import { useTranslation } from 'react-i18next'; import Exit from '../assets/exit.svg'; import Input from '../components/Input'; @@ -17,6 +18,7 @@ export default function ConfigToolModal({ tool: AvailableTool | null; getUserTools: () => void; }) { + const { t } = useTranslation(); const [authKey, setAuthKey] = React.useState(''); const handleAddTool = (tool: AvailableTool) => { @@ -52,21 +54,22 @@ export default function ConfigToolModal({

- Tool Config + {t('modals.configTool.title')}

- Type: {tool?.name} + {t('modals.configTool.type')}:{' '} + {tool?.name}

- API Key / Oauth + {t('modals.configTool.apiKeyLabel')} setAuthKey(e.target.value)} borderVariant="thin" - placeholder="Enter API Key / Oauth" + placeholder={t('modals.configTool.apiKeyPlaceholder')} >
@@ -76,7 +79,7 @@ export default function ConfigToolModal({ }} className="rounded-3xl bg-purple-30 px-5 py-2 text-sm text-white transition-all hover:bg-[#6F3FD1]" > - Add Tool + {t('modals.configTool.addButton')}
diff --git a/frontend/src/modals/ShareConversationModal.tsx b/frontend/src/modals/ShareConversationModal.tsx index 3f87839e..44156761 100644 --- a/frontend/src/modals/ShareConversationModal.tsx +++ b/frontend/src/modals/ShareConversationModal.tsx @@ -101,11 +101,17 @@ export const ShareConversationModal = ({ return (
-

{t('modals.shareConv.label')}

-

{t('modals.shareConv.note')}

+

+ {t('modals.shareConv.label')} +

+

+ {t('modals.shareConv.note')} +

- {t('modals.shareConv.option')} -