diff --git a/src/assets/locale/de/chrome.json b/src/assets/locale/de/chrome.json new file mode 100644 index 0000000..cf0d83d --- /dev/null +++ b/src/assets/locale/de/chrome.json @@ -0,0 +1,13 @@ +{ + "heading": "Chrome AI konfigurieren", + "status": { + "label": "Chrome AI-Unterstützung für Page Assist aktivieren oder deaktivieren" + }, + "error": { + "browser_not_supported": "Diese Version von Chrome wird vom Gemini Nano-Modell nicht unterstützt. Bitte aktualisieren Sie auf Version 127 oder höher", + "ai_not_supported": "Die Einstellung chrome://flags/#prompt-api-for-gemini-nano ist nicht aktiviert. Bitte aktivieren Sie sie.", + "ai_not_ready": "Gemini Nano ist noch nicht bereit; Sie müssen die Chrome-Einstellungen überprüfen.", + "internal_error": "Ein interner Fehler ist aufgetreten. Bitte versuchen Sie es später erneut." + }, + "errorDescription": "Um Chrome AI zu nutzen, benötigen Sie eine Browserversion höher als 127, die derzeit in den Dev- und Canary-Kanälen verfügbar ist. Nach dem Herunterladen der unterstützten Version folgen Sie diesen Schritten:\n\n1. Gehen Sie zu `chrome://flags/#prompt-api-for-gemini-nano` und wählen Sie \"Aktivieren\".\n2. Gehen Sie zu `chrome://flags/#optimization-guide-on-device-model` und wählen Sie \"EnabledBypassPrefRequirement\".\n3. Gehen Sie zu `chrome://components`, suchen Sie nach \"Optimization Guide On Device Model\" und klicken Sie auf \"Nach Update suchen\". Dies wird das Modell herunterladen. Wenn Sie die Einstellungen nicht sehen, wiederholen Sie die Schritte 1 und 2 und starten Sie Ihren Browser neu." +} \ No newline at end of file diff --git a/src/assets/locale/de/common.json b/src/assets/locale/de/common.json new file mode 100644 index 0000000..2fc2e70 --- /dev/null +++ b/src/assets/locale/de/common.json @@ -0,0 +1,100 @@ +{ + "pageAssist": "Page Assist", + "selectAModel": "Modell auswählen", + "save": "Speichern", + "saved": "Gespeichert", + "cancel": "Abbrechen", + "retry": "Erneut versuchen", + "share": { + "tooltip": { + "share": "Teilen" + }, + "modal": { + "title": "Link zum Chat teilen" + }, + "form": { + "defaultValue": { + "name": "Anonym", + "title": "Unbenannter Chat" + }, + "title": { + "label": "Chat-Titel", + "placeholder": "Chat-Titel eingeben", + "required": "Chat-Titel ist erforderlich" + }, + "name": { + "label": "Ihr Name", + "placeholder": "Geben Sie Ihren Namen ein", + "required": "Ihr Name ist erforderlich" + }, + "btn": { + "save": "Link generieren", + "saving": "Link wird generiert..." + } + }, + "notification": { + "successGenerate": "Link in die Zwischenablage kopiert", + "failGenerate": "Link konnte nicht generiert werden" + } + }, + "copyToClipboard": "In die Zwischenablage kopieren", + "webSearch": "Web durchsuchen", + "regenerate": "Neu generieren", + "edit": "Bearbeiten", + "saveAndSubmit": "Speichern & Absenden", + "editMessage": { + "placeholder": "Nachricht eingeben..." + }, + "submit": "Absenden", + "noData": "Keine Daten", + "noHistory": "Kein Chat-Verlauf", + "chatWithCurrentPage": "Mit aktueller Seite chatten", + "beta": "Beta", + "tts": "Vorlesen", + "currentChatModelSettings": "Aktuelle Chat-Modell-Einstellungen", + "modelSettings": { + "label": "Modell-Einstellungen", + "description": "Legen Sie die Modelloptionen global für alle Chats fest", + "form": { + "keepAlive": { + "label": "Aktiv halten", + "help": "Steuert, wie lange das Modell nach der Anfrage im Speicher geladen bleibt (Standard: 5m)", + "placeholder": "Geben Sie die Dauer für Aktiv halten ein (z.B. 5m, 10m, 1h)" + }, + "temperature": { + "label": "Temperatur", + "placeholder": "Geben Sie den Temperaturwert ein (z.B. 0.7, 1.0)" + }, + "numCtx": { + "label": "Anzahl der Kontexte", + "placeholder": "Geben Sie die Anzahl der Kontexte ein (Standard: 2048)" + }, + "seed": { + "label": "Seed", + "placeholder": "Geben Sie den Seed-Wert ein (z.B. 1234)", + "help": "Reproduzierbarkeit der Modellausgabe" + }, + "topK": { + "label": "Top K", + "placeholder": "Geben Sie den Top-K-Wert ein (z.B. 40, 100)" + }, + "topP": { + "label": "Top P", + "placeholder": "Geben Sie den Top-P-Wert ein (z.B. 0.9, 0.95)" + }, + "numGpu": { + "label": "Anzahl GPUs", + "placeholder": "Geben Sie die Anzahl der Ebenen ein, die an GPU(s) gesendet werden sollen" + } + }, + "advanced": "Weitere Modell-Einstellungen" + }, + "copilot": { + "summary": "Zusammenfassen", + "explain": "Erklären", + "rephrase": "Umformulieren", + "translate": "Übersetzen", + "custom": "Benutzerdefiniert" + }, + "citations": "Zitate" +} \ No newline at end of file diff --git a/src/assets/locale/de/knowledge.json b/src/assets/locale/de/knowledge.json new file mode 100644 index 0000000..f572702 --- /dev/null +++ b/src/assets/locale/de/knowledge.json @@ -0,0 +1,43 @@ +{ + "addBtn": "Neues Wissen hinzufügen", + "columns": { + "title": "Titel", + "status": "Status", + "embeddings": "Einbettungsmodell", + "createdAt": "Erstellt am", + "action": "Aktionen" + }, + "expandedColumns": { + "name": "Name" + }, + "tooltip": { + "delete": "Löschen" + }, + "confirm": { + "delete": "Sind Sie sicher, dass Sie dieses Wissen löschen möchten?" + }, + "deleteSuccess": "Wissen erfolgreich gelöscht", + "status": { + "pending": "Ausstehend", + "finished": "Abgeschlossen", + "processing": "In Bearbeitung", + "failed": "Fehlgeschlagen" + }, + "addKnowledge": "Wissen hinzufügen", + "form": { + "title": { + "label": "Wissenstitel", + "placeholder": "Wissenstitel eingeben", + "required": "Wissenstitel ist erforderlich" + }, + "uploadFile": { + "label": "Datei hochladen", + "uploadText": "Ziehen Sie eine Datei hierher oder klicken Sie zum Hochladen", + "uploadHint": "Unterstützte Dateitypen: .pdf, .csv, .txt, .md, .docx", + "required": "Datei ist erforderlich" + }, + "submit": "Absenden", + "success": "Wissen erfolgreich hinzugefügt" + }, + "noEmbeddingModel": "Bitte fügen Sie zuerst ein Einbettungsmodell von der RAG-Einstellungsseite hinzu" +} \ No newline at end of file diff --git a/src/assets/locale/de/option.json b/src/assets/locale/de/option.json new file mode 100644 index 0000000..f6ec7f9 --- /dev/null +++ b/src/assets/locale/de/option.json @@ -0,0 +1,12 @@ +{ + "newChat": "Neuer Chat", + "selectAPrompt": "Wähle eine Eingabeaufforderung", + "githubRepository": "GitHub-Repository", + "settings": "Einstellungen", + "sidebarTitle": "Chat-Verlauf", + "error": "Fehler", + "somethingWentWrong": "Etwas ist schiefgelaufen", + "validationSelectModel": "Bitte wähle ein Modell aus, um fortzufahren", + "deleteHistoryConfirmation": "Bist du sicher, dass du diesen Verlauf löschen möchtest?", + "editHistoryTitle": "Gib einen neuen Titel ein" +} \ No newline at end of file diff --git a/src/assets/locale/de/playground.json b/src/assets/locale/de/playground.json new file mode 100644 index 0000000..119d87f --- /dev/null +++ b/src/assets/locale/de/playground.json @@ -0,0 +1,29 @@ +{ + "ollamaState": { + "searching": "Suche nach Ihrem Ollama 🦙", + "running": "Ollama läuft 🦙", + "notRunning": "Verbindung zu Ollama nicht möglich 🦙", + "connectionError": "Es scheint, dass Sie ein Verbindungsproblem haben. Bitte beachten Sie diese Dokumentation zur Fehlerbehebung." + }, + "formError": { + "noModel": "Bitte wählen Sie ein Modell aus", + "noEmbeddingModel": "Bitte legen Sie ein Embedding-Modell auf der Seite Einstellungen > RAG fest" + }, + "form": { + "textarea": { + "placeholder": "Nachricht eingeben..." + }, + "webSearch": { + "on": "An", + "off": "Aus" + } + }, + "tooltip": { + "searchInternet": "Internet durchsuchen", + "speechToText": "Sprache zu Text", + "uploadImage": "Bild hochladen", + "stopStreaming": "Streaming stoppen", + "knowledge": "Wissen" + }, + "sendWhenEnter": "Senden bei Drücken der Eingabetaste" +} \ No newline at end of file diff --git a/src/assets/locale/de/settings.json b/src/assets/locale/de/settings.json new file mode 100644 index 0000000..d44390a --- /dev/null +++ b/src/assets/locale/de/settings.json @@ -0,0 +1,341 @@ +{ + "generalSettings": { + "title": "Allgemeine Einstellungen", + "settings": { + "heading": "Web-UI-Einstellungen", + "speechRecognitionLang": { + "label": "Spracherkennungssprache", + "placeholder": "Sprache auswählen" + }, + "language": { + "label": "Sprache", + "placeholder": "Sprache auswählen" + }, + "darkMode": { + "label": "Design ändern", + "options": { + "light": "Hell", + "dark": "Dunkel" + } + }, + "copilotResumeLastChat": { + "label": "Letzten Chat beim Öffnen des Seitenpanels fortsetzen (Copilot)" + }, + "hideCurrentChatModelSettings": { + "label": "Aktuelle Chat-Modell-Einstellungen ausblenden" + }, + "restoreLastChatModel": { + "label": "Zuletzt verwendetes Modell für vorherige Chats wiederherstellen" + }, + "sendNotificationAfterIndexing": { + "label": "Benachrichtigung nach Abschluss der Wissensbasis-Verarbeitung senden" + }, + "generateTitle" :{ + "label": "Titel mit KI generieren" + } + }, + "sidepanelRag": { + "heading": "Copilot Chat mit Website-Einstellungen", + "ragEnabled": { + "label": "Chat mit Website unter Verwendung von Vektor-Embeddings" + }, + "maxWebsiteContext": { + "label": "Normaler Modus Website-Inhaltsgröße", + "placeholder": "Inhaltsgröße (Standard 4028)" + } + }, + "webSearch": { + "heading": "Websuche verwalten", + "searchMode": { + "label": "Einfache Internetsuche durchführen" + }, + "provider": { + "label": "Suchmaschine", + "placeholder": "Suchmaschine auswählen" + }, + "totalSearchResults": { + "label": "Gesamtanzahl der Suchergebnisse", + "placeholder": "Gesamtanzahl der Suchergebnisse eingeben" + }, + "visitSpecificWebsite": { + "label": "Die in der Nachricht erwähnte Website besuchen" + } + }, + "system": { + "heading": "Systemeinstellungen", + "deleteChatHistory": { + "label": "Chatverlauf löschen", + "button": "Löschen", + "confirm": "Sind Sie sicher, dass Sie Ihren Chatverlauf löschen möchten? Diese Aktion kann nicht rückgängig gemacht werden." + }, + "export": { + "label": "Chatverlauf, Wissensbasis und Prompts exportieren", + "button": "Daten exportieren", + "success": "Export erfolgreich" + }, + "import": { + "label": "Chatverlauf, Wissensbasis und Prompts importieren", + "button": "Daten importieren", + "success": "Import erfolgreich", + "error": "Importfehler" + } + }, + "tts": { + "heading": "Text-zu-Sprache-Einstellungen", + "ttsEnabled": { + "label": "Text-zu-Sprache aktivieren" + }, + "ttsProvider": { + "label": "Text-zu-Sprache-Anbieter", + "placeholder": "Anbieter auswählen" + }, + "ttsVoice": { + "label": "Text-zu-Sprache-Stimme", + "placeholder": "Stimme auswählen" + }, + "ssmlEnabled": { + "label": "SSML (Speech Synthesis Markup Language) aktivieren" + } + } + }, + "manageModels": { + "title": "Modelle verwalten", + "addBtn": "Neues Modell hinzufügen", + "columns": { + "name": "Name", + "digest": "Digest", + "modifiedAt": "Zuletzt geändert", + "size": "Größe", + "actions": "Aktionen" + }, + "expandedColumns": { + "parentModel": "Übergeordnetes Modell", + "format": "Format", + "family": "Familie", + "parameterSize": "Parametergröße", + "quantizationLevel": "Quantisierungsstufe" + }, + "tooltip": { + "delete": "Modell löschen", + "repull": "Modell erneut herunterladen" + }, + "confirm": { + "delete": "Sind Sie sicher, dass Sie dieses Modell löschen möchten?", + "repull": "Sind Sie sicher, dass Sie dieses Modell erneut herunterladen möchten?" + }, + "modal": { + "title": "Neues Modell hinzufügen", + "placeholder": "Modellnamen eingeben", + "pull": "Modell herunterladen" + }, + "notification": { + "pullModel": "Modell wird heruntergeladen", + "pullModelDescription": "Das Modell {{modelName}} wird heruntergeladen. Weitere Details finden Sie im Erweiterungssymbol.", + "success": "Erfolgreich", + "error": "Fehler", + "successDescription": "Das Modell wurde erfolgreich heruntergeladen", + "successDeleteDescription": "Das Modell wurde erfolgreich gelöscht", + "someError": "Etwas ist schiefgelaufen. Bitte versuchen Sie es später erneut" + } + }, + "managePrompts": { + "title": "Prompts verwalten", + "addBtn": "Neuen Prompt hinzufügen", + "option1": "Normal", + "option2": "RAG", + "questionPrompt": "Frage-Prompt", + "segmented": { + "custom": "Benutzerdefinierte Prompts", + "copilot": "Copilot-Prompts" + }, + "columns": { + "title": "Titel", + "prompt": "Prompt", + "type": "Prompt-Typ", + "actions": "Aktionen" + }, + "systemPrompt": "System-Prompt", + "quickPrompt": "Schnell-Prompt", + "tooltip": { + "delete": "Prompt löschen", + "edit": "Prompt bearbeiten" + }, + "confirm": { + "delete": "Sind Sie sicher, dass Sie diesen Prompt löschen möchten? Diese Aktion kann nicht rückgängig gemacht werden." + }, + "modal": { + "addTitle": "Neuen Prompt hinzufügen", + "editTitle": "Prompt bearbeiten" + }, + "form": { + "title": { + "label": "Titel", + "placeholder": "Mein toller Prompt", + "required": "Bitte geben Sie einen Titel ein" + }, + "prompt": { + "label": "Prompt", + "placeholder": "Prompt eingeben", + "required": "Bitte geben Sie einen Prompt ein", + "help": "Sie können {key} als Variable in Ihrem Prompt verwenden.", + "missingTextPlaceholder": "Die Variable {text} fehlt im Prompt. Bitte fügen Sie sie hinzu." + }, + "isSystem": { + "label": "Ist System-Prompt" + }, + "btnSave": { + "saving": "Prompt wird hinzugefügt...", + "save": "Prompt hinzufügen" + }, + "btnEdit": { + "saving": "Prompt wird aktualisiert...", + "save": "Prompt aktualisieren" + } + }, + "notification": { + "addSuccess": "Prompt hinzugefügt", + "addSuccessDesc": "Prompt wurde erfolgreich hinzugefügt", + "error": "Fehler", + "someError": "Etwas ist schiefgelaufen. Bitte versuchen Sie es später erneut", + "updatedSuccess": "Prompt aktualisiert", + "updatedSuccessDesc": "Prompt wurde erfolgreich aktualisiert", + "deletedSuccess": "Prompt gelöscht", + "deletedSuccessDesc": "Prompt wurde erfolgreich gelöscht" + } + }, + "manageShare": { + "title": "Freigabe verwalten", + "heading": "Seiten-Freigabe-URL konfigurieren", + "form": { + "url": { + "label": "Seiten-Freigabe-URL", + "placeholder": "Seiten-Freigabe-URL eingeben", + "required": "Bitte geben Sie Ihre Seiten-Freigabe-URL ein!", + "help": "Aus Datenschutzgründen können Sie die Seitenfreigabe selbst hosten und die URL hier angeben. Mehr erfahren." + } + }, + "webshare": { + "heading": "Web-Freigabe", + "columns": { + "title": "Titel", + "url": "URL", + "actions": "Aktionen" + }, + "tooltip": { + "delete": "Freigabe löschen" + }, + "confirm": { + "delete": "Sind Sie sicher, dass Sie diese Freigabe löschen möchten? Diese Aktion kann nicht rückgängig gemacht werden." + }, + "label": "Seitenfreigabe verwalten", + "description": "Seitenfreigabe-Funktion aktivieren oder deaktivieren" + }, + "notification": { + "pageShareSuccess": "Seiten-Freigabe-URL erfolgreich aktualisiert", + "someError": "Etwas ist schiefgelaufen. Bitte versuchen Sie es später erneut", + "webShareDeleteSuccess": "Web-Freigabe erfolgreich gelöscht" + } + }, + "ollamaSettings": { + "title": "Ollama-Einstellungen", + "heading": "Ollama konfigurieren", + "settings": { + "ollamaUrl": { + "label": "Ollama-URL", + "placeholder": "Ollama-URL eingeben" + }, + "advanced": { + "label": "Erweiterte Ollama-URL-Konfiguration", + "urlRewriteEnabled": { + "label": "Benutzerdefinierte Ursprungs-URL aktivieren oder deaktivieren" + }, + "rewriteUrl": { + "label": "Benutzerdefinierte Ursprungs-URL", + "placeholder": "Benutzerdefinierte Ursprungs-URL eingeben" + }, + "headers": { + "label": "Benutzerdefinierte Header", + "add": "Header hinzufügen", + "key": { + "label": "Header-Schlüssel", + "placeholder": "Autorisierung" + }, + "value": { + "label": "Header-Wert", + "placeholder": "Bearer-Token" + } + }, + "help": "Wenn Sie Verbindungsprobleme mit Ollama auf Page Assist haben, können Sie eine benutzerdefinierte Ursprungs-URL konfigurieren. Um mehr über die Konfiguration zu erfahren, klicken Sie hier." + } + } + }, + "manageSearch": { + "title": "Web-Suche verwalten", + "heading": "Web-Suche konfigurieren" + }, + "about": { + "title": "Über", + "heading": "Über", + "chromeVersion": "Page Assist Version", + "ollamaVersion": "Ollama Version", + "support": "Sie können das Page Assist-Projekt durch Spenden oder Sponsoring über die folgenden Plattformen unterstützen:", + "koFi": "Unterstützen Sie uns auf Ko-fi", + "githubSponsor": "Sponsern Sie uns auf GitHub", + "githubRepo": "GitHub-Repository" + }, + "manageKnowledge": { + "title": "Wissen verwalten", + "heading": "Wissensbasis konfigurieren" + }, + "rag": { + "title": "RAG-Einstellungen", + "ragSettings": { + "label": "RAG-Einstellungen", + "model": { + "label": "Embedding-Modell", + "required": "Bitte wählen Sie ein Modell aus", + "help": "Es wird dringend empfohlen, Embedding-Modelle wie `nomic-embed-text` zu verwenden.", + "placeholder": "Wählen Sie ein Modell aus" + }, + "chunkSize": { + "label": "Chunk-Größe", + "placeholder": "Chunk-Größe eingeben", + "required": "Bitte geben Sie eine Chunk-Größe ein" + }, + "chunkOverlap": { + "label": "Chunk-Überlappung", + "placeholder": "Chunk-Überlappung eingeben", + "required": "Bitte geben Sie eine Chunk-Überlappung ein" + }, + "totalFilePerKB": { + "label": "Standard-Datei-Upload-Limit für die Wissensbasis", + "placeholder": "Geben Sie das Standard-Datei-Upload-Limit ein (z.B. 10)", + "required": "Bitte geben Sie das Standard-Datei-Upload-Limit ein" + }, + "noOfRetrievedDocs": { + "label": "Anzahl der abgerufenen Dokumente", + "placeholder": "Anzahl der abgerufenen Dokumente eingeben", + "required": "Bitte geben Sie die Anzahl der abgerufenen Dokumente ein" + } + }, + "prompt": { + "label": "RAG-Prompt konfigurieren", + "option1": "Normal", + "option2": "Web", + "alert": "Die Konfiguration des System-Prompts hier ist veraltet. Bitte verwenden Sie den Abschnitt 'Prompts verwalten', um Prompts hinzuzufügen oder zu bearbeiten. Dieser Abschnitt wird in einer zukünftigen Version entfernt", + "systemPrompt": "System-Prompt", + "systemPromptPlaceholder": "System-Prompt eingeben", + "webSearchPrompt": "Web-Suche-Prompt", + "webSearchPromptHelp": "Entfernen Sie `{search_results}` nicht aus dem Prompt.", + "webSearchPromptError": "Bitte geben Sie einen Web-Suche-Prompt ein", + "webSearchPromptPlaceholder": "Web-Suche-Prompt eingeben", + "webSearchFollowUpPrompt": "Web-Suche-Folgeprompt", + "webSearchFollowUpPromptHelp": "Entfernen Sie `{chat_history}` und `{question}` nicht aus dem Prompt.", + "webSearchFollowUpPromptError": "Bitte geben Sie Ihren Web-Suche-Folgeprompt ein!", + "webSearchFollowUpPromptPlaceholder": "Ihr Web-Suche-Folgeprompt" + } + }, + "chromeAiSettings": { + "title": "Chrome AI-Einstellungen" + } +} diff --git a/src/assets/locale/de/sidepanel.json b/src/assets/locale/de/sidepanel.json new file mode 100644 index 0000000..5638697 --- /dev/null +++ b/src/assets/locale/de/sidepanel.json @@ -0,0 +1,7 @@ +{ + "tooltip": { + "embed": "Es kann einige Minuten dauern, die Seite einzubetten. Bitte warten Sie...", + "clear": "Chatverlauf löschen", + "history": "Chatverlauf" + } +} \ No newline at end of file diff --git a/src/assets/locale/en/common.json b/src/assets/locale/en/common.json index 47bcd67..fe6fae2 100644 --- a/src/assets/locale/en/common.json +++ b/src/assets/locale/en/common.json @@ -95,5 +95,6 @@ "rephrase": "Rephrase", "translate": "Translate", "custom": "Custom" - } + }, + "citations": "Citations" } \ No newline at end of file diff --git a/src/assets/locale/es/common.json b/src/assets/locale/es/common.json index 9f1950c..37378d6 100644 --- a/src/assets/locale/es/common.json +++ b/src/assets/locale/es/common.json @@ -94,5 +94,6 @@ "explain": "Explicar", "rephrase": "Reformular", "translate": "Traducir" - } + }, + "citations": "Citas" } \ No newline at end of file diff --git a/src/assets/locale/fa/common.json b/src/assets/locale/fa/common.json index 3e9635b..7ea892f 100644 --- a/src/assets/locale/fa/common.json +++ b/src/assets/locale/fa/common.json @@ -88,5 +88,6 @@ } }, "advanced": "تنظیمات بیشتر مدل" - } + }, + "citations": "منابع" } \ No newline at end of file diff --git a/src/assets/locale/fr/common.json b/src/assets/locale/fr/common.json index 4833892..5300406 100644 --- a/src/assets/locale/fr/common.json +++ b/src/assets/locale/fr/common.json @@ -94,5 +94,6 @@ "explain": "Expliquer", "rephrase": "Reformuler", "translate": "Traduire" - } + }, + "citations": "Citations" } \ No newline at end of file diff --git a/src/assets/locale/it/common.json b/src/assets/locale/it/common.json index e56b203..45f0dee 100644 --- a/src/assets/locale/it/common.json +++ b/src/assets/locale/it/common.json @@ -93,5 +93,6 @@ "explain": "Spiegare", "rephrase": "Riformulare", "translate": "Tradurre" - } + }, + "citations": "Citazioni" } \ No newline at end of file diff --git a/src/assets/locale/ja-JP/common.json b/src/assets/locale/ja-JP/common.json index d65ca6d..254c40e 100644 --- a/src/assets/locale/ja-JP/common.json +++ b/src/assets/locale/ja-JP/common.json @@ -94,5 +94,6 @@ "explain": "説明", "rephrase": "言い換え", "translate": "翻訳" - } + }, + "citations": "引用" } \ No newline at end of file diff --git a/src/assets/locale/ml/common.json b/src/assets/locale/ml/common.json index 5f03cbc..7e94f1a 100644 --- a/src/assets/locale/ml/common.json +++ b/src/assets/locale/ml/common.json @@ -93,5 +93,6 @@ "explain": "വിശദീകരിക്കുക", "rephrase": "പുനഃരൂപീകരിക്കുക", "translate": "വിവർത്തനം ചെയ്യുക" - } + }, + "citations": "ഉദ്ധരണികൾ" } \ No newline at end of file diff --git a/src/assets/locale/pt-BR/common.json b/src/assets/locale/pt-BR/common.json index f9b3609..0fa9e3f 100644 --- a/src/assets/locale/pt-BR/common.json +++ b/src/assets/locale/pt-BR/common.json @@ -94,5 +94,6 @@ "explain": "Explicar", "rephrase": "Reformular", "translate": "Traduzir" - } + }, + "citations": "Citações" } \ No newline at end of file diff --git a/src/assets/locale/ru/common.json b/src/assets/locale/ru/common.json index a4262fa..77d423b 100644 --- a/src/assets/locale/ru/common.json +++ b/src/assets/locale/ru/common.json @@ -93,5 +93,6 @@ "explain": "Объяснить", "rephrase": "Перефразировать", "translate": "Перевести" - } + }, + "citations": "Цитаты" } \ No newline at end of file diff --git a/src/assets/locale/zh/common.json b/src/assets/locale/zh/common.json index badcec4..eda9d1b 100644 --- a/src/assets/locale/zh/common.json +++ b/src/assets/locale/zh/common.json @@ -94,5 +94,6 @@ "explain": "解释", "rephrase": "重述", "translate": "翻译" - } + }, + "citations": "引用" } \ No newline at end of file diff --git a/src/components/Common/Playground/Message.tsx b/src/components/Common/Playground/Message.tsx index b21bbe1..268d0b6 100644 --- a/src/components/Common/Playground/Message.tsx +++ b/src/components/Common/Playground/Message.tsx @@ -1,6 +1,6 @@ import Markdown from "../../Common/Markdown" import React from "react" -import { Tag, Image, Tooltip } from "antd" +import { Tag, Image, Tooltip, Collapse } from "antd" import { WebSearch } from "./WebSearch" import { CheckIcon, @@ -127,15 +127,31 @@ export const PlaygroundMessage = (props: Props) => { )} {props.isBot && props?.sources && props?.sources.length > 0 && ( -
- {props?.sources?.map((source, index) => ( - - ))} -
+ + {t('citations')} + + ), + children: ( +
+ {props?.sources?.map((source, index) => ( + + ))} +
+ ) + } + ]} + /> )} {!props.isProcessing && !editMode && (
= ({ messages }) => { const chat = reformatMessages(messages, values.name) const title = values.title const url = await getPageShareUrl() - const res = await fetch(`${cleanUrl(url)}/api/v1/share/create`, { + const res = await fetcher(`${cleanUrl(url)}/api/v1/share/create`, { method: "POST", headers: { "Content-Type": "application/json" diff --git a/src/components/Option/Playground/PlaygroundForm.tsx b/src/components/Option/Playground/PlaygroundForm.tsx index 274600e..cb2029a 100644 --- a/src/components/Option/Playground/PlaygroundForm.tsx +++ b/src/components/Option/Playground/PlaygroundForm.tsx @@ -14,6 +14,7 @@ import { useTranslation } from "react-i18next" import { KnowledgeSelect } from "../Knowledge/KnowledgeSelect" import { useSpeechRecognition } from "@/hooks/useSpeechRecognition" import { PiGlobe } from "react-icons/pi" +import { handleChatInputKeyDown } from "@/utils/key-down" type Props = { dropedFile: File | undefined @@ -144,13 +145,16 @@ export const PlaygroundForm = ({ dropedFile }: Props) => { }) const handleKeyDown = (e: React.KeyboardEvent) => { - if (e.key === "Process" || e.key === "229") return + if (import.meta.env.BROWSER !== "firefox") { + if (e.key === "Process" || e.key === "229") return + } if ( - !typing && - e.key === "Enter" && - !e.shiftKey && - !isSending && - sendWhenEnter + handleChatInputKeyDown({ + e, + sendWhenEnter, + typing, + isSending + }) ) { e.preventDefault() stopListening() @@ -244,8 +248,16 @@ export const PlaygroundForm = ({ dropedFile }: Props) => { />