diff --git a/src/i18n.ts b/src/i18n.ts index 72d56581..635cabbe 100644 --- a/src/i18n.ts +++ b/src/i18n.ts @@ -8,6 +8,22 @@ import zhCN from "./locales/zh-CN/translation.json" import es from "./locales/es/translation.json" import ja from "./locales/ja/translation.json" import ko from "./locales/ko/translation.json" +import fr from "./locales/fr/translation.json" +import de from "./locales/de/translation.json" +import pl from "./locales/pl/translation.json" +import fi from "./locales/fi/translation.json" +import sv from "./locales/sv/translation.json" +import no from "./locales/no/translation.json" +import it from "./locales/it/translation.json" +import tr from "./locales/tr/translation.json" +import ru from "./locales/ru/translation.json" +import uk from "./locales/uk/translation.json" +import id from "./locales/id/translation.json" +import th from "./locales/th/translation.json" +import vi from "./locales/vi/translation.json" +import lo from "./locales/lo/translation.json" +import fil from "./locales/fil/translation.json" +import pt from "./locales/pt/translation.json" i18n .use(LanguageDetector) @@ -31,10 +47,58 @@ i18n }, ko: { translation: ko + }, + fr: { + translation: fr + }, + de: { + translation: de + }, + pl: { + translation: pl + }, + fi: { + translation: fi + }, + sv: { + translation: sv + }, + no: { + translation: no + }, + it: { + translation: it + }, + tr: { + translation: tr + }, + ru: { + translation: ru + }, + uk: { + translation: uk + }, + id: { + translation: id + }, + th: { + translation: th + }, + vi: { + translation: vi + }, + lo: { + translation: lo + }, + fil: { + translation: fil + }, + pt: { + translation: pt } }, fallbackLng: "en", - supportedLngs: ["zh-TW", "zh-CN", "en", "es", "ja", "ko"], + supportedLngs: ["zh-TW", "zh-CN", "en", "es", "ja", "ko", "fr", "de", "pl", "fi", "sv", "no", "it", "tr", "ru", "uk", "id", "th", "vi", "lo", "fil", "pt"], interpolation: { escapeValue: false } diff --git a/src/locales/de/translation.json b/src/locales/de/translation.json new file mode 100644 index 00000000..64e1c66f --- /dev/null +++ b/src/locales/de/translation.json @@ -0,0 +1,442 @@ +{ + "header": { + "title": "Dive AI", + "openSidebar": "Seitenleiste öffnen", + "closeSidebar": "Seitenleiste schließen" + }, + "chat": { + "placeholder": "Nachricht senden...", + "newChat": "Neuer Chat", + "newChatTooltip": "Neue Konversation starten", + "history": "Verlauf", + "copyCode": "Kopieren", + "previewCode": "Zum Vorschauen klicken", + "uploadFile": "Datei hochladen", + "send": "Senden", + "untitledChat": "Unbenannter Chat", + "deleteChat": "Chat löschen", + "deleteSuccess": "Chat gelöscht", + "deleteFailed": "Löschen fehlgeschlagen", + "confirmDelete": "Löschen bestätigen", + "confirmDeleteDescription": "Nach dem Löschen kann der Chat nicht wiederhergestellt werden.", + "tools": { + "button": "Werkzeuge", + "enabledHint": "{{enabled}} Werkzeuge aktiviert", + "failedHint": "{{enabled}} Werkzeuge aktiviert, {{failed}} Werkzeuge fehlgeschlagen" + }, + "abort": "Generierung stoppen", + "retry": "Erneut versuchen", + "noModelAlert": "Keine Modelle verfügbar", + "noModelBanner": "Keine Modelle verfügbar, bitte wählen Sie zuerst ein Modell aus", + "onLimit": "Sie haben das Nutzungslimit des {{plan}}-Plans erreicht, oap-Modelle können nicht verwendet werden", + "modelSettings": "Modelleinstellungen", + "copy": "Kopieren", + "copied": "Kopiert", + "edit": "Bearbeiten", + "editDescription": "Das Bearbeiten dieser Nachricht erzeugt eine neue Antwort", + "cancel": "Abbrechen", + "save": "Speichern", + "toolCalls": "🛠 {{name}} Werkzeugaufruf-Ergebnis", + "unsupportTools": "{{model}} unterstützt keine Werkzeugaufrufe", + "dragFiles": "Dateien hier ablegen, um sie zum Chat hinzuzufügen", + "tools-btn": { + "disableToast": "Werkzeugaufrufe deaktiviert", + "disable": "Werkzeugaufrufe deaktivieren", + "enableToast": "Werkzeugaufrufe aktiviert", + "enable": "Werkzeugaufrufe aktivieren" + } + }, + "welcome": { + "title": "Willkommen bei Dive AI", + "subtitle": "Starten Sie Ihre KI-Konversation", + "startChat": "Chat starten" + }, + "setup": { + "title": "Ersteinrichtung", + "subtitle": "Bitte konfigurieren Sie die Modelleinstellungen", + "required": "Dieses Feld ist erforderlich", + "submit": "Einstellungen speichern", + "provider": "Modellanbieter", + "verify": "Modell verifizieren", + "verifying": "Verifizierung läuft...", + "verifySuccess": "Modellverifizierung erfolgreich", + "verifySuccessNoTool": "Modellverifizierung erfolgreich, unterstützt jedoch keine Werkzeugaufrufe", + "verifyFailed": "Modellverifizierung fehlgeschlagen", + "verifyError": "Fehler bei der Verifizierung aufgetreten", + "saveSuccess": "Einstellungen erfolgreich gespeichert", + "saveFailed": "Fehler beim Speichern der Einstellungen", + "back": "Zurück", + "parameters": "Parameter", + "topPDescription": "Der Top-P-Parameter steuert den Bereich der Wortauswahl. Ein Wert von 0 verwendet den Standardwert; niedrigere Werte wählen nur Wörter mit hoher Wahrscheinlichkeit aus und führen zu konservativen Antworten; höhere Werte erweitern den Vokabularbereich und führen zu abwechslungsreicheren Antworten.", + "temperatureDescription": "Der Temperaturparameter steuert die Zufälligkeit der Antworten. Ein Wert von 0 verwendet den Standardwert; niedrigere Werte erzeugen präzisere und stabilere Antworten; höhere Werte erzeugen kreativere, aber weniger strenge Antworten." + }, + "sidebar": { + "tools": "Werkzeugverwaltung (MCP)", + "settings": "Modelleinstellungen", + "update": "Update verfügbar", + "models": "Modelleinstellungen", + "system": "Systemeinstellungen", + "manageAndSettings": "Verwaltung und Einstellungen", + "OAPhub": "OAPhub", + "signOut": "Abmelden", + "chat": { + "starredChat": "Favoriten", + "starChat": "Als Favorit markieren", + "unStarChat": "Favorit entfernen", + "starFailed": "Favorit hinzufügen fehlgeschlagen", + "renameChat": "Umbenennen", + "renameFailed": "Umbenennen fehlgeschlagen", + "deleteChat": "Löschen" + } + }, + "setting": { + "tabs": { + "Tools": "MCP-Werkzeugverwaltung", + "Model": "Modellanbieter", + "Account": "Konto", + "System": "Systemeinstellungen" + } + }, + "tools": { + "title": "Werkzeugverwaltung (MCP)", + "editConfig": "Konfiguration bearbeiten", + "editConfigAlt": "MCP-Serverkonfiguration bearbeiten", + "configTitle": "MCP-Serverkonfiguration", + "save": "Speichern", + "cancel": "Abbrechen", + "saveSuccess": "Einstellungen erfolgreich gespeichert", + "saveFailed": "Fehler beim Speichern der Einstellungen", + "toggleFailed": "Ein Fehler ist aufgetreten", + "reloadFailed": "{{toolName}} ist ein Fehler aufgetreten, Neuladen fehlgeschlagen", + "reloadAllFailed": "{{number}} Werkzeugaufrufe sind ein Fehler aufgetreten, Neuladen fehlgeschlagen", + "openConfigFolder": "Konfigurationsordner", + "openConfigFolderAlt": "Konfigurationsordner öffnen", + "fetchFailed": "Fehler beim Laden der Werkzeuge", + "configFetchFailed": "Fehler beim Laden der Konfiguration", + "configSaveAborted": "Konfigurationsspeicherung unterbrochen", + "invalidJson": "Ungültiges JSON-Format", + "updateFailed": "{{serverName}} Fehler beim Laden: {{error}}", + "installFailed": "Installation fehlgeschlagen", + "startFailed": "Start fehlgeschlagen", + "toolMenu": { + "delete": "Löschen", + "edit": "Bearbeiten", + "reload": "Neu laden", + "detail": "Details anzeigen" + }, + "delete": "Löschen", + "jsonCopy": "Kopieren", + "jsonCopied": "Kopiert", + "jsonDownload": "Herunterladen", + "deleteTitle": "Löschen von {{mcp}}-Werkzeug bestätigen?", + "deleteAllTitle": "Löschen aller Werkzeuge bestätigen?", + "fieldTitle": "Feld", + "fieldTitleAlt": "Felder erfüllen normalerweise die meisten Anforderungen, aber wenn Ihre MCP-Einstellungen zusätzliche Felder oder andere Typen erfordern, können Sie direkt im JSON-Textbereich rechts bearbeiten, um die Anforderungen Ihres Programms zu erfüllen", + "initialTimeoutAlt": "Die anfängliche Verbindungswartezeit ist standardmäßig auf 10 Sekunden eingestellt, kann aber auf eine beliebige Dezimalzahl von 10 Sekunden oder mehr eingestellt werden. Es gibt keine Begrenzung für die Anzahl der Sekunden. Es wird empfohlen, diesen Wert anzupassen, wenn der Server eine langsame Verbindung hat.", + "initialTimeoutPlaceholder": "Initial Timeout eingeben...", + "initialTimeoutError": "Bitte geben Sie eine Zahl größer oder gleich 10 ein", + "jsonDesc": "Bitte geben Sie MCP-Server-JSON in das Feld ein oder fügen Sie es ein", + "addArg": "Argument hinzufügen", + "addEnv": "Umgebungsvariable hinzufügen", + "jsonFormatError": { + "addFormat": "Konfigurationsformatfehler, bitte überprüfen und korrigieren Sie das Format", + "format": "{{mcp}} Konfigurationsformatfehler, bitte überprüfen und korrigieren Sie das Format", + "nameEmpty": "Name darf nicht leer sein, bitte geben Sie einen gültigen Namen ein", + "nameExist": "Eine Konfiguration mit dem Namen \"{{mcp}}\" existiert bereits", + "stringError": "Werkzeug {{mcp}}: Feld {{field}} muss eine Zeichenkette sein", + "numberError": "Werkzeug {{mcp}}: Feld {{field}} muss eine Zahl sein", + "floatError": "Werkzeug {{mcp}}: Feld {{field}} muss eine Dezimalzahl sein", + "booleanError": "Werkzeug {{mcp}}: Feld {{field}} muss auf true oder false gesetzt werden", + "arrayError": "Werkzeug {{mcp}}: Feld {{field}} muss als Array bereitgestellt werden", + "objectError": "Werkzeug {{mcp}}: Feld {{field}} muss als Objekt bereitgestellt werden", + "optionError": "Werkzeug {{mcp}}: Feld {{field}} kann nur {{options}} sein", + "requiredError": "Werkzeug {{mcp}}: Feld {{field}} ist erforderlich", + "jsonError": "Werkzeug {{mcp}}: JSON-Formatfehler, bitte überprüfen und korrigieren Sie das Format", + "toolNumberError": "Im Bearbeitungsmodus kann nur ein Werkzeug eingestellt werden, bitte entfernen Sie andere Nicht-Werkzeug-Elemente", + "enabled": "Werkzeug {{mcp}}: Feld enabled muss auf true oder false gesetzt werden", + "command": "Werkzeug {{mcp}}: Feld command muss eine Zeichenkette sein", + "args": "Werkzeug {{mcp}}: Feld args muss als Array bereitgestellt werden", + "env": "Werkzeug {{mcp}}: Feld env muss als Objekt bereitgestellt werden", + "url": "Werkzeug {{mcp}}: Feld url muss eine Zeichenkette sein", + "transport": "Werkzeug {{mcp}}: Feld transport kann nur {{options}} sein", + "initialTimeout": "Werkzeug {{mcp}}: Feld initialTimeout muss eine Dezimalzahl sein", + "range": "Werkzeug {{mcp}}: Feldwert {{field}} liegt außerhalb des Bereichs, bitte überprüfen und korrigieren Sie den Wert", + "minRange": "Werkzeug {{mcp}}: Feld {{field}} muss größer oder gleich {{value}} sein", + "maxRange": "Werkzeug {{mcp}}: Feld {{field}} muss kleiner oder gleich {{value}} sein" + }, + "namePlaceholder": "Name eingeben...", + "commandPlaceholder": "Befehl eingeben...", + "argsPlaceholder": "Argumente eingeben...", + "envKey": "Variablennamen (Key) eingeben...", + "envValue": "Variablenwert (Value) eingeben...", + "inputKeyError": "{{ name }} Variablenname doppelt", + "urlPlaceholder": "URL eingeben...", + "transportPlaceholder": "Transport auswählen...", + "providerSearchPlaceholder": "Anbieter suchen eingeben...", + "noProviderSearchResult": "Kein zugehöriger Anbieter gefunden", + "toogleToolAlt": "MCP-Werkzeuge aktivieren", + "logTitle": "UVX-Befehl ausführen", + "logProcessing": "Verarbeitung läuft...", + "no_tool_title": "Keine MCP-Server verfügbar", + "no_oap_tool_message": { + "all": "Bitte wählen Sie einen OAP MCP-Server zur Verwendung aus oder fügen Sie einen benutzerdefinierten MCP-Server hinzu.", + "oap": "Bitte wählen Sie einen OAP MCP-Server zur Verwendung aus.", + "custom": "Bitte fügen Sie einen benutzerdefinierten MCP-Server hinzu." + }, + "no_tool_message": "Bitte fügen Sie einen MCP-Server hinzu.", + "tab": { + "all": "Alle Werkzeuge", + "oap": "OAP-Werkzeuge", + "custom": "Benutzerdefinierte Werkzeuge" + }, + "oapStoreLinkAlt": "Details anzeigen", + "subToolsCount": "Werkzeuge aktiviert: {{count}} / {{total}}", + "disabledDescription": "Deaktiviert", + "unsaved": { + "title": "Nicht gespeicherte Änderungen", + "desc": "Sie haben nicht gespeicherte Änderungen. Wenn Sie diese Seite verlassen, gehen die Änderungen verloren. Möchten Sie fortfahren?", + "cancel": "Änderungen verwerfen", + "save": "Speichern" + }, + "oauthAlert": "Bitte bestätigen Sie, dass Sie diesem Connector vertrauen: Dieser Connector wurde nicht von Dive verifiziert. Sie sind für alle Vorgänge verantwortlich, die Sie mit Dive durchführen.", + "reload": { + "headerBtn": "Neu laden", + "headerBtnAlt": "MCP-Werkzeuge neu laden und aktualisieren" + }, + "oap": { + "type": { + "all": "Alle Werkzeuge", + "base": "Nur Base anzeigen", + "pro": "Nur Pro anzeigen" + }, + "sort": { + "title": "Sortieren", + "popular": "Beliebt", + "new": "Neu" + }, + "tag": "Tag", + "no_search_data_title": "Keine MCP-Werkzeuge gefunden", + "no_search_data": "Keine Suchergebnisse gefunden, bitte löschen Sie das Suchwort oder passen Sie die Filterbedingungen an.", + "clear_filter": "Filter löschen", + "hint": "High-Level-MCP-Server erfordern ein Upgrade auf die Pro-Version zur Installation", + "high_cost_title": "MCP-Server mit hohen Kosten aktivieren", + "high_cost_desc": "Sie haben MCP-Server ausgewählt, die viele Token verbrauchen. Bitte überprüfen Sie, ob Ihre Plannutzung ausreichend ist.", + "headerBtnAlt": "OAP MCP-Werkzeuge hinzufügen / anzeigen" + }, + "custom": { + "headerBtn": "Konfiguration hinzufügen / bearbeiten", + "headerBtnAlt": "Benutzerdefinierte Werkzeuge hinzufügen / bearbeiten", + "listAdd": "MCP-Server hinzufügen", + "titleAdd": "MCP-Server hinzufügen", + "titleEdit": "{{tool}} MCP bearbeiten", + "titleEditJson": "MCP-Werkzeugeinstellungen" + } + }, + "modelConfig": { + "title": "Modelleinstellungen", + "customInstructions": "Benutzerdefinierte Eingabeaufforderung", + "customInstructionsPlaceholder": "Benutzerdefinierte Systemeingabeaufforderung eingeben...", + "customInstructionsDescription": "Diese Eingabeaufforderungen werden am Ende jeder Anforderung-Systemeingabeaufforderung hinzugefügt", + "saveInstructions": "Anweisungen speichern", + "customRulesSaved": "Benutzerdefinierte Anweisungen gespeichert", + "customRulesFailed": "Fehler beim Speichern der benutzerdefinierten Anweisungen", + "modelDescription": "Zu verwendender Modellname", + "modelDescriptionHint": "Zu verwendender Modellname (Bitte geben Sie zuerst den API-Schlüssel ein, um verfügbare Modelle anzuzeigen)" + }, + "common": { + "close": "Schließen", + "confirm": "Bestätigen", + "cancel": "Abbrechen", + "copy": "Kopieren", + "copySuccess": "Kopiert", + "zoomInImage": "Bild vergrößern", + "copyImage": "Bild kopieren", + "copyImageUrl": "Bild-URL kopieren", + "downloadImage": "Bild herunterladen", + "login": "Anmelden", + "signup": "Registrieren", + "save": "Speichern", + "signout": "Abmelden" + }, + "models": { + "title": "Modelleinstellungen", + "newProvider": "+ Anbieter hinzufügen", + "parameters": "Parametereinstellungen", + "instructionsSetting": "Anweisungseinstellungen", + "listTitle": "Modellanbieter konfigurieren", + "optional": "(Optional)", + "selfOptional": "(Optional)", + "unSupportModelCount": "Sie haben {{count}} nicht unterstützte Modelle ausgewählt", + "deleteTitle": "Löschen von {{name}}-Schlüssel bestätigen?", + "deleteDescription": "Diese Aktion kann nicht rückgängig gemacht werden.", + "deleteAllTitle": "Modelllöschung bestätigen?", + "deleteAllDescription": "Nach dem Löschen sind keine Modelle für die Konversation verfügbar", + "deleteToast": "{{name}}-Schlüssel gelöscht", + "deleteFailed": "Fehler beim Löschen der Anbieterauthentifizierung", + "providerMenu1": "Anbieter bearbeiten", + "providerMenu2": "Modell verwalten", + "providerMenu3": "Löschen", + "verifying": "Verifizierung von API-Schlüssel und Modell...", + "verifyingAbort": "Verifizierung unterbrochen, bitte versuchen Sie es später erneut", + "apiKeyError": "Ungültiger API-Schlüssel, bitte überprüfen und geben Sie Ihren API-Schlüssel erneut ein.", + "closeAllTitle": "Deaktivierung bestätigen?", + "closeAllDescription": "Nach der Deaktivierung sind keine Modelle für die Konversation verfügbar", + "noModelAlertTitle": "Keine Modelle verfügbar!", + "noModelAlertDescription": "Alle ausgewählten Modelle werden nicht unterstützt, Konversation ist nicht möglich", + "selectModelPlaceHolder": "Modell auswählen...", + "noModelAlertOption": "Keine verfügbaren Modelle", + "popupTitle": "Verfügbare Modelle", + "searchPlaceholder": "Modelle suchen...", + "noResult": "Keine verfügbaren Modelle", + "reloadModelList": "Neu laden", + "modelSaved": "Modelle gespeichert", + "modelSaveFailed": "Fehler beim Speichern der Modelle", + "parameterSaved": "Parameter gespeichert", + "parameterSaveFailed": "Fehler beim Speichern der Parameter", + "ignored": "Verifizierung für dieses Modell überspringen", + "unSupportModel": "Modell nicht unterstützt", + "unToolCallsSupport": "Werkzeugaufrufe nicht unterstützt", + "verify": "Verifizieren", + "verifyIgnore": "Ignorieren", + "verifyIgnoreAlt": "Verifizierungserinnerung wird nicht mehr angezeigt", + "verifyNextTime": "Später", + "verifyNextTimeAlt": "Wird beim nächsten Mal zur Verifizierung auffordern", + "verifyTitle": "! {{count}} nicht verifizierte Modelle erkannt", + "verifyDesc": "Die folgenden Modelle sind nicht verifiziert. Möchten Sie sie verifizieren?", + "progressVerifying": "Modellverifizierung läuft, bitte warten...", + "verifyMenu": { + "advanced": "Erweiterte Einstellungen", + "verify": "Modell verifizieren", + "ignore": "Verifizierung ignorieren", + "delete": "Modell löschen" + }, + "customModelID": { + "add": "+ Benutzerdefinierte Modell-ID", + "title": "Benutzerdefinierte Modell-ID", + "placeholder": "Benutzerdefinierte Modell-ID eingeben...", + "Error": { + "empty": "Benutzerdefinierte Modell-ID darf nicht leer sein", + "exist": "Benutzerdefinierte Modell-ID existiert bereits" + } + }, + "copyContent": "Inhalt kopieren", + "editProviderTitle": "{{provider}}-Konfiguration bearbeiten", + "hide": "Ausblenden", + "display": "Anzeigen", + "copy": "Kopieren", + "modelSetting": "Erweiterte Einstellungen", + "streamingModeTooltip": "Der Streaming-Modus zeigt den Inhalt schrittweise an, anstatt alles auf einmal anzuzeigen. Wenn Sie die Schaltfläche deaktivieren, wird im Nicht-Streaming-Modus gewartet, bis das Modell den Inhalt vollständig generiert hat, und alles auf einmal angezeigt, um Kompatibilitätsprobleme mit Werkzeugaufrufen im Modell zu vermeiden.", + "streamingModeDescription": "Steuern, wie Modellantworten angezeigt werden", + "streamingModeAlert": "Erinnerung: Einige Modelle unterstützen Werkzeugaufrufe nur im Streaming-Modus oder im Nicht-Streaming-Modus. Es wird empfohlen, Ihre Anforderungen vollständig zu verstehen, bevor Sie diesen Parameter anpassen.", + "customInput": "Benutzerdefinierte Eingabe", + "addCustomParameter": "Benutzerdefinierten Parameter hinzufügen", + "parameterName": "Parametername", + "parameterType": "Parametertyp", + "parameterValue": "Parameterwert", + "parameterNameDescription": "Name eingeben, wie Temperatur", + "parameterTypeDescription": "Typ auswählen", + "parameterValueDescription": "Bitte wählen Sie zuerst den Parametertyp aus und geben Sie dann den Wert ein", + "parameterNameDuplicate": "Parametername existiert bereits", + "parameterTypeInt": "Ganzzahl", + "parameterTypeFloat": "Dezimalzahl", + "parameterTypeString": "Zeichenkette", + "parameterTypeIntDescription": "Zulässiger Bereich 0-1M", + "parameterTypeFloatDescription": "Zulässiger Bereich 0.0-1.0", + "parameterTypeStringDescription": "Bitte geben Sie eine Zeichenkette ein, wie medium", + "reasoningLevelDescription": "Tiefe des Modelldenkens festlegen", + "reasoningLevelTooltip": "Niedrig steht für eine schnelle Antwort, die sich auf Schlussfolgerungen konzentriert und ohne zusätzliche Details mit direkter und einfacher Begründung arbeitet. Mittel bietet eine Antwort mit ausreichender logischer Erklärung, die wichtige Informationen abdeckt. Hoch bietet eine tiefgehende Antwort mit strukturierter und detaillierter Analyse und Erklärung.", + "tokenBudgetDescription": "Begründungswert festlegen ({{min}}~{{max}})", + "parameterVerify": "Parameterverifizierung", + "verifyErrorInfo": "Details zum Verifizierungsfehler", + "verifyErrorMsg": "Das Modell hat während der Verifizierung keine Werkzeuge verwendet, was auf mangelnde Unterstützung oder Nicht-Auslösung zurückzuführen sein kann. Daher kann nicht bestätigt werden, ob es Werkzeuge unterstützt.", + "verifyStatusSuccess": "Modellverifizierung erfolgreich, mit ursprünglicher Konfiguration aktiviert", + "verifyStatusSuccessInPrompt": "Modellverifizierung erfolgreich, mit MCP Prompts aktiviert", + "verifyUnexpectedFailed": "Modellverifizierung fehlgeschlagen, ein unbekannter Fehler ist aufgetreten, bitte versuchen Sie es später erneut", + "oapUsageLimit": "Nutzungslimit erreicht, vorübergehend nicht verfügbar" + }, + "system": { + "title": "Systemeinstellungen", + "language": "Systemsprache", + "languageDefault": "Systemstandard", + "languageDescription": "Sprache zur Anzeige der Systemoberfläche. Die im Modell verwendete Sprache kann auf der Modelleinstellungsseite geändert werden. Dies bezieht sich auf die auf der Dive-Oberfläche angezeigte Sprache", + "theme": "Dunkler Modus", + "themeDescription": "Zwischen Systemstandard und dunklem Modus wechseln", + "defaultInstructions": "speak in German", + "autoDownload": "Automatischer Update-Download", + "autoDownloadDescription": "Laden Sie automatisch die neue Version von DIVE herunter, wenn der Benutzer neu startet oder auf die Schaltfläche \"Upgrade\" auf der Menüseite klickt. Die neue Version wird aktiviert", + "autoLaunch": "Automatischer Start", + "autoLaunchDescription": "Dive AI automatisch beim Systemstart starten", + "minimalToTray": "In Systemablage minimieren", + "minimalToTrayDescription": "Beim Schließen des Fensters wird das Programm in die Systemablage minimiert, anstatt vollständig zu beenden", + "loginTitle": "OAP-Anmeldung", + "loginDescription": "Verwenden Sie OpenAgentPlatform zum Anmelden, kein technischer Hintergrund erforderlich, um LLMs, KI-Agenten und MCP-Server einfach zu verbinden — Erleben Sie jetzt intelligente Lösungen!", + "personalInformationTitle": "Persönliche Informationen", + "defaultSystemPrompt": "Dive Standard-Systemeingabeaufforderung", + "defaultSystemPromptDescription": "Die Dive Standard-Systemeingabeaufforderung wird als Standard-Systemeingabeaufforderung für den Chat verwendet. Sie teilt dem LLM mit, dass der Dive-Chat KaTeX / Markdown / Mermaid usw. unterstützt. Diese Funktion verbraucht bestimmte Token, was die Antwort möglicherweise langsamer macht als die Eingabeaufforderung ohne Systemeingabeaufforderung. Andererseits kann die Qualität der LLM-Antwort abnehmen, wenn sie deaktiviert ist", + "usageAnalytics": "Zur Dashboard-Seite in OAP Hub gehen, um anzuzeigen", + "usageAnalyticsTitle": "Nutzungsanalyse", + "userEdit": "Zur Kontoseite in OAP Hub gehen, um Änderungen vorzunehmen", + "planSectionTitle": "Aktuelle Plannutzung", + "subscriptionDate": "Abonnementdatum", + "remainingUsage": "Verbleibende Nutzung", + "usageWarningTitle": "Token-Nutzungslimit erreicht.", + "usageWarning": "Das Pro-Plan-Kontingent wird nächsten Monat zurückgesetzt, oder kaufen Sie Token-Pakete für mehr Nutzung. Basismodelle und MCP sind weiterhin verfügbar.", + "BaseSubscriptionDate": "Läuft nie ab", + "BaseRemainingUsage": "Keine Begrenzung", + "BaseUsageWarning": "Der Base-Plan umfasst den Zugriff auf Basismodelle und Basis-MCPs. Um andere Modelle und MCPs zu verwenden, aktualisieren Sie bitte Ihren Plan von der Plan-Seite.", + "customPromptDescription": "Wenn Sie zusätzliche benutzerdefinierte Anweisungen benötigen, klicken Sie bitte auf die Funktion \"Benutzerdefinierte Eingabeaufforderung\" unten, um sie einzurichten.", + "customPromptButton": "Benutzerdefinierte Eingabeaufforderung", + "tokenPackageTitle": "Token-Paketnutzung", + "tokenPackageHint": "Token-Pakete haben kein Ablaufdatum und werden erst nach Erschöpfung des monatlichen Plankontingents verwendet.", + "tokenPackageRemainingUsage": "Verbleibende Nutzung", + "tokenPackageWarningTitle": "Token-Kontingent aufgebraucht.", + "tokenPackageWarning": "Sie können mehr Token-Nutzung auf der OAPhub Dashboard-Seite auffüllen.", + "skipTlsVerifyWarning": "Sicherheitswarnung: Das Ignorieren der Zertifikatsverifizierung kann die Verbindungssicherheit verringern. Es wird empfohlen, dies in vertrauenswürdigen Netzwerkumgebungen zu verwenden." + }, + "toast": { + "copiedToClipboard": "In Zwischenablage kopiert", + "copyFailed": "Kopieren fehlgeschlagen", + "copiedImage": "Bild kopiert", + "downloadedImage": "Bild heruntergeladen" + }, + "keymap": { + "title": "Tastenkombinationen", + "events": { + "chat-input_submit": "Nachricht senden", + "chat-input_upload-file": "Datei hochladen", + "chat-input_focus": "Eingabe fokussieren", + "chat-input_paste-last-message": "Letzte Nachricht einfügen", + "chat-message_copy-last": "Letzte Nachricht kopieren", + "chat_delete": "Chat löschen", + "global_new-chat": "Neuer Chat", + "global_toggle-sidebar": "Seitenleiste umschalten", + "global_close-layer": "Fenster schließen", + "global_toggle-keymap-modal": "Tastenkombinations-Hilfe umschalten" + } + }, + "update": { + "downloading": "Herunterladen...", + "readyToInstall": "Bereit zur Installation", + "clickToInstall": "Klicken Sie hier, um das Update zu installieren" + }, + "login": { + "subtitle": "Dive AI ist eine Open-Source-Desktop-Anwendung, die nahtlos verschiedene große Sprachmodelle integriert, die Funktionsaufrufe unterstützen. Mit seiner klaren und intuitiven Benutzeroberfläche können Sie problemlos mit modernster KI konversieren, von alltäglichen Fragen bis hin zu beruflichen Aufgaben, präzise Antworten erhalten und sie zu Ihrem intelligenten Assistenten machen.", + "title1": "Verwenden Sie Ihre eigenen vorbereiteten Modelle", + "description1": "Geeignet für fortgeschrittene KI-Experten. Wenn Sie bereits Ihre eigene Konfiguration bereit haben, sei es lokales Ollama, llama.cpp oder Remote-LLM-APIs von Openrouter, OpenAI, Anthropic oder anderen KI-Unternehmen, verwenden Sie bitte diese Option.", + "button1": "Zu Modelleinstellungen gehen", + "title2": "Verwenden Sie OpenAgentPlatform", + "description2": "OAP ermöglicht es jedem, die fortschrittlichsten KI-Dienste einfach zu nutzen und LLMs, KI-Agenten und MCP-Server ohne technisches Fachwissen zu verbinden. Erkunden Sie die unbegrenzten Möglichkeiten der KI und erleben Sie jetzt intelligente Lösungen.", + "button2": "Für OAP registrieren", + "button3": "Bei OAP anmelden" + }, + "InstallHostDependencies": { + "title": "Host-Abhängigkeiten werden heruntergeladen...", + "retry": "Erneut versuchen", + "stop": "Stoppen", + "tip": "Wenn während des Downloads ein Fehler auftritt, schließen Sie bitte zuerst dieses Fenster und starten Sie die Anwendung neu, um erneut herunterzuladen." + }, + "deeplink": { + "mcpInstallConfirm": "Stdio MCP-Dienst hinzufügen - Sie werden MCP über den folgenden Befehl hinzufügen, bitte bestätigen:" + } +} + diff --git a/src/locales/fi/translation.json b/src/locales/fi/translation.json new file mode 100644 index 00000000..a15010cf --- /dev/null +++ b/src/locales/fi/translation.json @@ -0,0 +1,442 @@ +{ + "header": { + "title": "Dive AI", + "openSidebar": "Avaa sivupalkki", + "closeSidebar": "Sulje sivupalkki" + }, + "chat": { + "placeholder": "Lähetä viesti...", + "newChat": "Uusi keskustelu", + "newChatTooltip": "Aloita uusi keskustelu", + "history": "Historia", + "copyCode": "Kopioi", + "previewCode": "Napsauta esikatselua", + "uploadFile": "Lataa tiedosto", + "send": "Lähetä", + "untitledChat": "Nimetön keskustelu", + "deleteChat": "Poista keskustelu", + "deleteSuccess": "Keskustelu poistettu", + "deleteFailed": "Poisto epäonnistui", + "confirmDelete": "Vahvista poisto", + "confirmDeleteDescription": "Kun keskustelu on poistettu, sitä ei voida palauttaa.", + "tools": { + "button": "Työkalut", + "enabledHint": "{{enabled}} työkalua käytössä", + "failedHint": "{{enabled}} työkalua käytössä, {{failed}} työkalua epäonnistui" + }, + "abort": "Pysäytä generointi", + "retry": "Yritä uudelleen", + "noModelAlert": "Ei malleja saatavilla", + "noModelBanner": "Ei malleja saatavilla, valitse ensin malli", + "onLimit": "Olet saavuttanut {{plan}}-suunnitelman käyttörajan, oap-malleja ei voi käyttää", + "modelSettings": "Malliasetukset", + "copy": "Kopioi", + "copied": "Kopioitu", + "edit": "Muokkaa", + "editDescription": "Tämän viestin muokkaaminen luo uuden vastauksen", + "cancel": "Peruuta", + "save": "Tallenna", + "toolCalls": "🛠 {{name}} työkalukutsun tulos", + "unsupportTools": "{{model}} ei tue työkalukutsuja", + "dragFiles": "Pudota tiedostot tähän lisätäksesi ne keskusteluun", + "tools-btn": { + "disableToast": "Työkalukutsut poistettu käytöstä", + "disable": "Poista työkalukutsut käytöstä", + "enableToast": "Työkalukutsut käytössä", + "enable": "Ota työkalukutsut käyttöön" + } + }, + "welcome": { + "title": "Tervetuloa Dive AI:hin", + "subtitle": "Aloita AI-keskustelusi", + "startChat": "Aloita keskustelu" + }, + "setup": { + "title": "Alkumääritys", + "subtitle": "Määritä malliasetukset", + "required": "Tämä kenttä on pakollinen", + "submit": "Tallenna asetukset", + "provider": "Mallin tarjoaja", + "verify": "Vahvista malli", + "verifying": "Vahvistetaan...", + "verifySuccess": "Mallin vahvistus onnistui", + "verifySuccessNoTool": "Mallin vahvistus onnistui, mutta ei tue työkalukutsuja", + "verifyFailed": "Mallin vahvistus epäonnistui", + "verifyError": "Virhe vahvistuksen aikana", + "saveSuccess": "Asetukset tallennettu onnistuneesti", + "saveFailed": "Asetusten tallennus epäonnistui", + "back": "Takaisin", + "parameters": "Parametrit", + "topPDescription": "Top-P-parametri ohjaa sanan valinnan aluetta. Arvo 0 käyttää oletusarvoa; pienemmät arvot valitsevat vain korkean todennäköisyyden sanoja, mikä johtaa konservatiivisiin vastauksiin; korkeammat arvot laajentavat sanaston aluetta, mikä johtaa vaihtelevampiin vastauksiin.", + "temperatureDescription": "Lämpötilaparametri ohjaa vastausten satunnaisuutta. Arvo 0 käyttää oletusarvoa; pienemmät arvot tuottavat tarkempia ja vakaampia vastauksia; korkeammat arvot tuottavat luovempia mutta vähemmän tarkkoja vastauksia." + }, + "sidebar": { + "tools": "Työkalujen hallinta (MCP)", + "settings": "Malliasetukset", + "update": "Päivitys saatavilla", + "models": "Malliasetukset", + "system": "Järjestelmäasetukset", + "manageAndSettings": "Hallinta ja asetukset", + "OAPhub": "OAPhub", + "signOut": "Kirjaudu ulos", + "chat": { + "starredChat": "Suosikit", + "starChat": "Lisää suosikkeihin", + "unStarChat": "Poista suosikeista", + "starFailed": "Suosikkeihin lisääminen epäonnistui", + "renameChat": "Nimeä uudelleen", + "renameFailed": "Uudelleennimeäminen epäonnistui", + "deleteChat": "Poista" + } + }, + "setting": { + "tabs": { + "Tools": "MCP-työkalujen hallinta", + "Model": "Mallin tarjoaja", + "Account": "Tili", + "System": "Järjestelmäasetukset" + } + }, + "tools": { + "title": "Työkalujen hallinta (MCP)", + "editConfig": "Muokkaa määritystä", + "editConfigAlt": "Muokkaa MCP-palvelimen määritystä", + "configTitle": "MCP-palvelimen määritys", + "save": "Tallenna", + "cancel": "Peruuta", + "saveSuccess": "Asetukset tallennettu onnistuneesti", + "saveFailed": "Asetusten tallennus epäonnistui", + "toggleFailed": "Virhe tapahtui", + "reloadFailed": "{{toolName}} tapahtui virhe, uudelleenlataus epäonnistui", + "reloadAllFailed": "{{number}} työkalukutsua tapahtui virhe, uudelleenlataus epäonnistui", + "openConfigFolder": "Määrityskansio", + "openConfigFolderAlt": "Avaa määrityskansio", + "fetchFailed": "Työkalujen lataus epäonnistui", + "configFetchFailed": "Määrityksen lataus epäonnistui", + "configSaveAborted": "Määrityksen tallennus keskeytetty", + "invalidJson": "Virheellinen JSON-muoto", + "updateFailed": "{{serverName}} lataus epäonnistui: {{error}}", + "installFailed": "Asennus epäonnistui", + "startFailed": "Käynnistys epäonnistui", + "toolMenu": { + "delete": "Poista", + "edit": "Muokkaa", + "reload": "Lataa uudelleen", + "detail": "Näytä tiedot" + }, + "delete": "Poista", + "jsonCopy": "Kopioi", + "jsonCopied": "Kopioitu", + "jsonDownload": "Lataa", + "deleteTitle": "Vahvista {{mcp}}-työkalun poisto?", + "deleteAllTitle": "Vahvista kaikkien työkalujen poisto?", + "fieldTitle": "Kenttä", + "fieldTitleAlt": "Kentät täyttävät yleensä useimmat tarpeet, mutta jos MCP-asetuksesi vaativat lisäkenttiä tai erilaisia tyyppejä, voit muokata suoraan oikealla puolella olevassa JSON-tekstialueessa vastaamaan ohjelmasi vaatimuksia", + "initialTimeoutAlt": "Alkuperäinen yhteysodotusaika on oletuksena 10 sekuntia, mutta se voidaan asettaa mihin tahansa liukulukuun, joka on vähintään 10 sekuntia. Sekuntien määrälle ei ole rajaa. Tämän arvon muuttamista suositellaan, jos palvelimella on hidas yhteys.", + "initialTimeoutPlaceholder": "Syötä alkuperäinen aikakatkaisu...", + "initialTimeoutError": "Syötä numero, joka on vähintään 10", + "jsonDesc": "Syötä tai liitä MCP-palvelimen JSON kenttään", + "addArg": "Lisää argumentti", + "addEnv": "Lisää ympäristömuuttuja", + "jsonFormatError": { + "addFormat": "Määrityksen muotovirhe, tarkista ja korjaa muoto", + "format": "{{mcp}} määrityksen muotovirhe, tarkista ja korjaa muoto", + "nameEmpty": "Nimi ei voi olla tyhjä, syötä kelvollinen nimi", + "nameExist": "Määritys nimellä \"{{mcp}}\" on jo olemassa", + "stringError": "Työkalu {{mcp}}: Kentän {{field}} on oltava merkkijono", + "numberError": "Työkalu {{mcp}}: Kentän {{field}} on oltava numero", + "floatError": "Työkalu {{mcp}}: Kentän {{field}} on oltava liukuluku", + "booleanError": "Työkalu {{mcp}}: Kenttä {{field}} on asetettava arvoon true tai false", + "arrayError": "Työkalu {{mcp}}: Kenttä {{field}} on toimitettava taulukkona", + "objectError": "Työkalu {{mcp}}: Kenttä {{field}} on toimitettava objektina", + "optionError": "Työkalu {{mcp}}: Kenttä {{field}} voi olla vain {{options}}", + "requiredError": "Työkalu {{mcp}}: Kenttä {{field}} on pakollinen", + "jsonError": "Työkalu {{mcp}}: JSON-muotovirhe, tarkista ja korjaa muoto", + "toolNumberError": "Muokkaustilassa voidaan asettaa vain yksi työkalu, poista muut ei-työkalu-elementit", + "enabled": "Työkalu {{mcp}}: Kenttä enabled on asetettava arvoon true tai false", + "command": "Työkalu {{mcp}}: Kentän command on oltava merkkijono", + "args": "Työkalu {{mcp}}: Kenttä args on toimitettava taulukkona", + "env": "Työkalu {{mcp}}: Kenttä env on toimitettava objektina", + "url": "Työkalu {{mcp}}: Kentän url on oltava merkkijono", + "transport": "Työkalu {{mcp}}: Kenttä transport voi olla vain {{options}}", + "initialTimeout": "Työkalu {{mcp}}: Kentän initialTimeout on oltava liukuluku", + "range": "Työkalu {{mcp}}: Kentän {{field}} arvo on alueen ulkopuolella, tarkista ja korjaa arvo", + "minRange": "Työkalu {{mcp}}: Kentän {{field}} on oltava vähintään {{value}}", + "maxRange": "Työkalu {{mcp}}: Kentän {{field}} on oltava enintään {{value}}" + }, + "namePlaceholder": "Syötä nimi...", + "commandPlaceholder": "Syötä komento...", + "argsPlaceholder": "Syötä argumentit...", + "envKey": "Syötä muuttujan nimi (Avain)...", + "envValue": "Syötä muuttujan arvo (Arvo)...", + "inputKeyError": "{{ name }} muuttujan nimi on duplikaatti", + "urlPlaceholder": "Syötä URL...", + "transportPlaceholder": "Valitse kuljetus...", + "providerSearchPlaceholder": "Syötä haku Tarjoaja...", + "noProviderSearchResult": "Liittyvää tarjoajaa ei löytynyt", + "toogleToolAlt": "Ota MCP-työkalut käyttöön", + "logTitle": "Suorita UVX-komento", + "logProcessing": "Käsitellään...", + "no_tool_title": "Ei MCP-palvelimia saatavilla", + "no_oap_tool_message": { + "all": "Valitse käytettävä OAP MCP-palvelin tai lisää mukautettu MCP-palvelin.", + "oap": "Valitse käytettävä OAP MCP-palvelin.", + "custom": "Lisää mukautettu MCP-palvelin." + }, + "no_tool_message": "Lisää MCP-palvelin.", + "tab": { + "all": "Kaikki työkalut", + "oap": "OAP-työkalut", + "custom": "Mukautetut työkalut" + }, + "oapStoreLinkAlt": "Näytä tiedot", + "subToolsCount": "Työkalut käytössä: {{count}} / {{total}}", + "disabledDescription": "Poistettu käytöstä", + "unsaved": { + "title": "Tallentamattomat muutokset", + "desc": "Sinulla on tallentamattomia muutoksia. Jos poistut tältä sivulta, muutokset menetetään. Haluatko jatkaa?", + "cancel": "Peruuta muutokset", + "save": "Tallenna" + }, + "oauthAlert": "Vahvista, että luotat tähän liittimeen: Dive ei ole vahvistanut tätä liitintä. Olet vastuussa kaikista Diven avulla suorittamistasi toiminnoista.", + "reload": { + "headerBtn": "Lataa uudelleen", + "headerBtnAlt": "Lataa uudelleen ja päivitä MCP-työkalut" + }, + "oap": { + "type": { + "all": "Kaikki työkalut", + "base": "Näytä vain Base", + "pro": "Näytä vain Pro" + }, + "sort": { + "title": "Lajittele", + "popular": "Suosittu", + "new": "Uusi" + }, + "tag": "Tunniste", + "no_search_data_title": "MCP-työkaluja ei löytynyt", + "no_search_data": "Hakutuloksia ei löytynyt, tyhjennä hakusana tai muuta suodatusehtoja.", + "clear_filter": "Tyhjennä suodatin", + "hint": "Korkean tason MCP-palvelimet vaativat päivitystä Pro-versioon asennusta varten", + "high_cost_title": "Ota käyttöön kalliit MCP-palvelimet", + "high_cost_desc": "Olet valinnut MCP-palvelimia, jotka kuluttavat paljon tokeneita. Tarkista, onko suunnitelmasi käyttö riittävä.", + "headerBtnAlt": "Lisää / Näytä OAP MCP-työkalut" + }, + "custom": { + "headerBtn": "Lisää / Muokkaa määritystä", + "headerBtnAlt": "Lisää / Muokkaa mukautettuja työkaluja", + "listAdd": "Lisää MCP-palvelin", + "titleAdd": "Lisää MCP-palvelin", + "titleEdit": "Muokkaa {{tool}} MCP", + "titleEditJson": "MCP-työkalujen asetukset" + } + }, + "modelConfig": { + "title": "Malliasetukset", + "customInstructions": "Mukautettu kehote", + "customInstructionsPlaceholder": "Syötä mukautettu järjestelmäkehote...", + "customInstructionsDescription": "Nämä kehotteet lisätään kunkin pyynnön järjestelmäkehotteen loppuun", + "saveInstructions": "Tallenna ohjeet", + "customRulesSaved": "Mukautetut ohjeet tallennettu", + "customRulesFailed": "Mukautettujen ohjeiden tallennus epäonnistui", + "modelDescription": "Käytettävä mallin nimi", + "modelDescriptionHint": "Käytettävä mallin nimi (Syötä ensin API-avain nähdäksesi saatavilla olevat mallit)" + }, + "common": { + "close": "Sulje", + "confirm": "Vahvista", + "cancel": "Peruuta", + "copy": "Kopioi", + "copySuccess": "Kopioitu", + "zoomInImage": "Suurenna kuva", + "copyImage": "Kopioi kuva", + "copyImageUrl": "Kopioi kuvan URL", + "downloadImage": "Lataa kuva", + "login": "Kirjaudu", + "signup": "Rekisteröidy", + "save": "Tallenna", + "signout": "Kirjaudu ulos" + }, + "models": { + "title": "Malliasetukset", + "newProvider": "+ Lisää tarjoaja", + "parameters": "Parametriasetukset", + "instructionsSetting": "Ohjeasetukset", + "listTitle": "Määritä mallin tarjoaja", + "optional": "(Valinnainen)", + "selfOptional": "(Valinnainen)", + "unSupportModelCount": "Olet valinnut {{count}} ei-tuettua mallia", + "deleteTitle": "Vahvista {{name}}-avaimen poisto?", + "deleteDescription": "Tätä toimintoa ei voi peruuttaa.", + "deleteAllTitle": "Vahvista mallin poisto?", + "deleteAllDescription": "Poiston jälkeen malleja ei ole saatavilla keskustelua varten", + "deleteToast": "{{name}}-avain poistettu", + "deleteFailed": "Tarjoajan todennuksen poisto epäonnistui", + "providerMenu1": "Muokkaa tarjoajaa", + "providerMenu2": "Hallinnoi mallia", + "providerMenu3": "Poista", + "verifying": "Vahvistetaan API-avainta ja mallia...", + "verifyingAbort": "Vahvistus keskeytetty, yritä myöhemmin uudelleen", + "apiKeyError": "Virheellinen API-avain, tarkista ja syötä API-avaimesi uudelleen.", + "closeAllTitle": "Vahvista käytöstä poisto?", + "closeAllDescription": "Käytöstä poiston jälkeen malleja ei ole saatavilla keskustelua varten", + "noModelAlertTitle": "Ei malleja saatavilla!", + "noModelAlertDescription": "Kaikki valitut mallit eivät ole tuettuja, keskustelu ei ole mahdollista", + "selectModelPlaceHolder": "Valitse malli...", + "noModelAlertOption": "Ei saatavilla olevia malleja", + "popupTitle": "Saatavilla olevat mallit", + "searchPlaceholder": "Hae malleja...", + "noResult": "Ei saatavilla olevia malleja", + "reloadModelList": "Lataa uudelleen", + "modelSaved": "Mallit tallennettu", + "modelSaveFailed": "Mallien tallennus epäonnistui", + "parameterSaved": "Parametrit tallennettu", + "parameterSaveFailed": "Parametrien tallennus epäonnistui", + "ignored": "Ohita vahvistus tälle mallille", + "unSupportModel": "Mallia ei tueta", + "unToolCallsSupport": "Työkalukutsuja ei tueta", + "verify": "Vahvista", + "verifyIgnore": "Ohita", + "verifyIgnoreAlt": "Vahvistusmuistutusta ei enää näytetä", + "verifyNextTime": "Myöhemmin", + "verifyNextTimeAlt": "Pyytää vahvistusta seuraavalla kerralla", + "verifyTitle": "! Havaittu {{count}} vahvistamatonta mallia", + "verifyDesc": "Seuraavia malleja ei ole vahvistettu. Haluatko vahvistaa ne?", + "progressVerifying": "Mallin vahvistus käynnissä, odota...", + "verifyMenu": { + "advanced": "Lisäasetukset", + "verify": "Vahvista malli", + "ignore": "Ohita vahvistus", + "delete": "Poista malli" + }, + "customModelID": { + "add": "+ Mukautettu mallin tunniste", + "title": "Mukautettu mallin tunniste", + "placeholder": "Syötä mukautettu mallin tunniste...", + "Error": { + "empty": "Mukautettu mallin tunniste ei voi olla tyhjä", + "exist": "Mukautettu mallin tunniste on jo olemassa" + } + }, + "copyContent": "Kopioi sisältö", + "editProviderTitle": "Muokkaa {{provider}}-määritystä", + "hide": "Piilota", + "display": "Näytä", + "copy": "Kopioi", + "modelSetting": "Lisäasetukset", + "streamingModeTooltip": "Suoratoistolajikerros on, kun malli vastaa, se näyttää sisällön vähitellen sen sijaan, että näyttäisi kaiken kerralla. Painikkeen käytöstä poistaminen ei-suoratoistolajikerroksessa odottaa, että malli luo sisällön kokonaan ja näyttää kaiken kerralla, välttäen yhteensopivuusongelmia työkalukutsujen kanssa mallissa.", + "streamingModeDescription": "Hallitse, miten mallin vastaukset näytetään", + "streamingModeAlert": "Muistutus: Jotkut mallit tukevat työkalukutsuja vain suoratoistolajikerroksessa tai ei-suoratoistolajikerroksessa. On suositeltavaa ymmärtää tarpeesi täysin ennen tämän parametrin säätämistä.", + "customInput": "Mukautettu syöte", + "addCustomParameter": "Lisää mukautettu parametri", + "parameterName": "Parametrin nimi", + "parameterType": "Parametrin tyyppi", + "parameterValue": "Parametrin arvo", + "parameterNameDescription": "Syötä nimi, kuten lämpötila", + "parameterTypeDescription": "Valitse tyyppi", + "parameterValueDescription": "Valitse ensin parametrin tyyppi ja syötä sitten arvo", + "parameterNameDuplicate": "Parametrin nimi on jo olemassa", + "parameterTypeInt": "Kokonaisluku", + "parameterTypeFloat": "Liukuluku", + "parameterTypeString": "Merkkijono", + "parameterTypeIntDescription": "Sallittu alue 0-1M", + "parameterTypeFloatDescription": "Sallittu alue 0.0-1.0", + "parameterTypeStringDescription": "Syötä merkkijono, kuten medium", + "reasoningLevelDescription": "Aseta mallin ajattelun syvyys", + "reasoningLevelTooltip": "Matala edustaa nopeaa vastausta, keskittyen johtopäätöksiin ja ilman lisätietoja, suoralla ja yksinkertaisella päättelyllä. Keskitaso tarjoaa vastauksen riittävällä loogisella selityksellä, kattaen keskeiset tiedot. Korkea tarjoaa syvän vastauksen strukturoidulla ja yksityiskohtaisella analyysilla ja selityksellä.", + "tokenBudgetDescription": "Aseta päättelyarvo ({{min}}~{{max}})", + "parameterVerify": "Parametrin vahvistus", + "verifyErrorInfo": "Vahvistusvirheen tiedot", + "verifyErrorMsg": "Malli ei käyttänyt mitään työkaluja vahvistuksen aikana, mikä voi johtua tuen puutteesta tai käynnistämättä jättämisestä. Siksi ei ole mahdollista vahvistaa, tukeeko se työkaluja.", + "verifyStatusSuccess": "Mallin vahvistus onnistui, käytössä alkuperäisellä määrityksellä", + "verifyStatusSuccessInPrompt": "Mallin vahvistus onnistui, käytössä MCP Promptsilla", + "verifyUnexpectedFailed": "Mallin vahvistus epäonnistui, tuntematon virhe tapahtui, yritä myöhemmin uudelleen", + "oapUsageLimit": "Käyttöraja saavutettu, väliaikaisesti ei saatavilla" + }, + "system": { + "title": "Järjestelmäasetukset", + "language": "Järjestelmän kieli", + "languageDefault": "Järjestelmän oletus", + "languageDescription": "Kieli, jota käytetään järjestelmän käyttöliittymän näyttämiseen. Mallissa käytettävää kieltä voidaan muuttaa malliasetussivulla, tämä viittaa Dive-käyttöliittymässä näytettävään kieleen", + "theme": "Tumma tila", + "themeDescription": "Vaihda järjestelmän oletuksen ja tumman tilan välillä", + "defaultInstructions": "speak in Finnish", + "autoDownload": "Automaattinen päivityksen lataus", + "autoDownloadDescription": "Lataa automaattisesti uusi DIVE-versio, kun käyttäjä käynnistää uudelleen tai napsauttaa \"Päivitä\"-painiketta valikko-sivulla, uusi versio otetaan käyttöön", + "autoLaunch": "Automaattinen käynnistys", + "autoLaunchDescription": "Käynnistä Dive AI automaattisesti järjestelmän käynnistyessä", + "minimalToTray": "Pienennä ilmoitusalueelle", + "minimalToTrayDescription": "Ikkunan sulkeutuessa ohjelma pienenee järjestelmän ilmoitusalueelle sen sijaan, että se sulkeutuisi kokonaan", + "loginTitle": "OAP-kirjautuminen", + "loginDescription": "Käytä OpenAgentPlatformia kirjautuaksesi, teknistä taustaa ei tarvita LLM:ien, AI-agenttien ja MCP-palvelimien helposti yhdistämiseen — Koe älykkäät ratkaisut nyt!", + "personalInformationTitle": "Henkilökohtaiset tiedot", + "defaultSystemPrompt": "Diven oletusjärjestelmäkehote", + "defaultSystemPromptDescription": "Diven oletusjärjestelmäkehotetta käytetään oletuksena järjestelmäkehotteena keskustelussa. Se kertoo LLM:lle, että Dive-keskustelu tukee KaTeX / Markdown / Mermaid jne. Tämä ominaisuus kuluttaa tiettyjä tokeneita, mikä voi tehdä vastauksesta hitaamman kuin kehotteessa ilman järjestelmäkehotetta. Toisaalta, jos se on poistettu käytöstä, LLM:n vastauksen laatu voi laskea", + "usageAnalytics": "Siirry OAP Hubin Dashboard-sivulle nähdäksesi", + "usageAnalyticsTitle": "Käyttöanalytiikka", + "userEdit": "Siirry OAP Hubin tili-sivulle tehdäksesi muutoksia", + "planSectionTitle": "Nykyisen suunnitelman käyttö", + "subscriptionDate": "Tilaus päivämäärä", + "remainingUsage": "Jäljellä oleva käyttö", + "usageWarningTitle": "Token-käyttöraja saavutettu.", + "usageWarning": "Pro-suunnitelman kiintiö nollautuu ensi kuussa tai osta token-paketteja lisäkäyttöä varten. Perusmallit ja MCP ovat edelleen saatavilla.", + "BaseSubscriptionDate": "Ei vanhene koskaan", + "BaseRemainingUsage": "Ei rajaa", + "BaseUsageWarning": "Base-suunnitelma sisältää pääsyn perusmalleihin ja perus-MCP:iin. Käyttääksesi muita malleja ja MCP:itä, päivitä suunnitelmasi Suunnitelma-sivulta.", + "customPromptDescription": "Jos tarvitset lisää mukautettuja ohjeita, napsauta alla olevaa \"Mukautettu kehote\" -toimintoa määrittääksesi sen.", + "customPromptButton": "Mukautettu kehote", + "tokenPackageTitle": "Token-paketin käyttö", + "tokenPackageHint": "Token-paketeilla ei ole vanhentumispäivää ja niitä käytetään vasta kuukausittaisen suunnitelman kiintiön ehtymisen jälkeen.", + "tokenPackageRemainingUsage": "Jäljellä oleva käyttö", + "tokenPackageWarningTitle": "Token-kiintiö käytetty loppuun.", + "tokenPackageWarning": "Voit täydentää lisää token-käyttöä OAPhubin Dashboard-sivulla.", + "skipTlsVerifyWarning": "Turvallisuusvaroitus: Sertifikaatin vahvistuksen ohittaminen voi vähentää yhteyden turvallisuutta. Suositellaan käyttämään luotetuissa verkkoympäristöissä." + }, + "toast": { + "copiedToClipboard": "Kopioitu leikepöydälle", + "copyFailed": "Kopiointi epäonnistui", + "copiedImage": "Kuva kopioitu", + "downloadedImage": "Kuva ladattu" + }, + "keymap": { + "title": "Pikanäppäimet", + "events": { + "chat-input_submit": "Lähetä viesti", + "chat-input_upload-file": "Lataa tiedosto", + "chat-input_focus": "Kohdista syöte", + "chat-input_paste-last-message": "Liitä viimeinen viesti", + "chat-message_copy-last": "Kopioi viimeinen viesti", + "chat_delete": "Poista keskustelu", + "global_new-chat": "Uusi keskustelu", + "global_toggle-sidebar": "Vaihda sivupalkki", + "global_close-layer": "Sulje ikkuna", + "global_toggle-keymap-modal": "Vaihda pikanäppäinapua" + } + }, + "update": { + "downloading": "Ladataan...", + "readyToInstall": "Valmis asennettavaksi", + "clickToInstall": "Napsauta asentaaksesi päivityksen" + }, + "login": { + "subtitle": "Dive AI on avoimen lähdekoodin työpöytäsovellus, joka integroi saumattomasti erilaisia suuria kielimalleja, jotka tukevat funktio kutsuja. Sen selkeän ja intuitiivisen käyttöliittymän avulla voit helposti keskustella huippuluokan AI:n kanssa, päivittäisistä kysymyksistä ammatillisiin tehtäviin, saat tarkkoja vastauksia ja teet siitä älykäs avustajan.", + "title1": "Käytä omia valmiiksi valmistettuja malleja", + "description1": "Sopii edistyneille AI-asiantuntijoille. Jos sinulla on jo oma määritys valmiina, olipa kyseessä paikallinen Ollama, llama.cpp tai etä-LLM-API:t Openrouter, OpenAI, Anthropic tai muut AI-yritykset, käytä tätä vaihtoehtoa.", + "button1": "Siirry malliasetuksiin", + "title2": "Käytä OpenAgentPlatformia", + "description2": "OAP tekee kaikille helpoksi käyttää edistyneimpiä AI-palveluita, yhdistäen LLM:t, AI-agentit ja MCP-palvelimet ilman teknistä asiantuntemusta. Tutki AI:n rajattomia mahdollisuuksia ja koe älykkäät ratkaisut nyt.", + "button2": "Rekisteröidy OAP:iin", + "button3": "Kirjaudu OAP:iin" + }, + "InstallHostDependencies": { + "title": "Ladataan isännän riippuvuuksia...", + "retry": "Yritä uudelleen", + "stop": "Pysäytä", + "tip": "Jos latauksen aikana tapahtuu virhe, sulje tämä ikkuna ensin ja käynnistä sovellus uudelleen ladataksesi uudelleen." + }, + "deeplink": { + "mcpInstallConfirm": "Lisää stdio MCP-palvelu - Lisäät MCP:n seuraavalla komennolla, vahvista:" + } +} + diff --git a/src/locales/fil/translation.json b/src/locales/fil/translation.json new file mode 100644 index 00000000..50193048 --- /dev/null +++ b/src/locales/fil/translation.json @@ -0,0 +1,442 @@ +{ + "header": { + "title": "Dive AI", + "openSidebar": "Buksan ang sidebar", + "closeSidebar": "Isara ang sidebar" + }, + "chat": { + "placeholder": "Magpadala ng mensahe...", + "newChat": "Bagong Chat", + "newChatTooltip": "Magsimula ng bagong pag-uusap", + "history": "Kasaysayan", + "copyCode": "Kopyahin", + "previewCode": "I-click para mag-preview", + "uploadFile": "Mag-upload ng File", + "send": "Ipadala", + "untitledChat": "Walang Pamagat na Chat", + "deleteChat": "Burahin ang Chat", + "deleteSuccess": "Nabura ang chat", + "deleteFailed": "Nabigo ang pagbura", + "confirmDelete": "Kumpirmahin ang Pagbura", + "confirmDeleteDescription": "Kapag nabura na, hindi na maibabalik ang chat.", + "tools": { + "button": "Mga Tool", + "enabledHint": "{{enabled}} mga tool na naka-enable", + "failedHint": "{{enabled}} mga tool na naka-enable, {{failed}} mga tool na nabigo" + }, + "abort": "Itigil ang Pagbuo", + "retry": "Subukan Muli", + "noModelAlert": "Walang available na mga modelo", + "noModelBanner": "Walang available na mga modelo, pumili muna ng modelo", + "onLimit": "Naabot mo na ang limitasyon sa paggamit ng {{plan}} plan, hindi magagamit ang oap models", + "modelSettings": "Mga Setting ng Modelo", + "copy": "Kopyahin", + "copied": "Nakopya", + "edit": "I-edit", + "editDescription": "Ang pag-edit ng mensaheng ito ay bubuo ng bagong tugon", + "cancel": "Kanselahin", + "save": "I-save", + "toolCalls": "🛠 {{name}} Resulta ng Tool Call", + "unsupportTools": "Hindi sinusuportahan ng {{model}} ang Tool Calls", + "dragFiles": "Ihulog ang mga file dito upang idagdag sa chat", + "tools-btn": { + "disableToast": "Na-disable ang Tool Calls", + "disable": "I-disable ang Tool Calls", + "enableToast": "Na-enable ang Tool Calls", + "enable": "I-enable ang Tool Calls" + } + }, + "welcome": { + "title": "Maligayang pagdating sa Dive AI", + "subtitle": "Simulan ang iyong AI conversation", + "startChat": "Magsimula ng Chat" + }, + "setup": { + "title": "Paunang Setup", + "subtitle": "Pakikonfigura ang mga setting ng modelo", + "required": "Kinakailangan ang field na ito", + "submit": "I-save ang Mga Setting", + "provider": "Provider ng Modelo", + "verify": "I-verify ang Modelo", + "verifying": "Nag-ve-verify...", + "verifySuccess": "Matagumpay ang pag-verify ng modelo", + "verifySuccessNoTool": "Matagumpay ang pag-verify ng modelo, ngunit hindi sinusuportahan ang Tool Calls", + "verifyFailed": "Nabigo ang pag-verify ng modelo", + "verifyError": "May naganap na error sa panahon ng pag-verify", + "saveSuccess": "Matagumpay na na-save ang mga setting", + "saveFailed": "Nabigo ang pag-save ng mga setting", + "back": "Bumalik", + "parameters": "Mga Parameter", + "topPDescription": "Kinokontrol ng Top-P parameter ang saklaw ng pagpili ng salita. Ang value na 0 ay gumagamit ng default value; mas mababang value ay pumipili lamang ng mga salitang may mataas na posibilidad, na nagreresulta sa konserbatibong mga tugon; mas mataas na value ay nagpapalawak ng saklaw ng bokabularyo, na nagreresulta sa mas iba't ibang mga tugon.", + "temperatureDescription": "Kinokontrol ng temperature parameter ang randomness ng tugon. Ang value na 0 ay gumagamit ng default value; mas mababang value ay gumagawa ng mas tumpak at stable na mga tugon; mas mataas na value ay bumubuo ng mas creative ngunit hindi masyadong mahigpit na mga tugon." + }, + "sidebar": { + "tools": "Pamamahala ng Tools (MCP)", + "settings": "Mga Setting ng Modelo", + "update": "May available na update", + "models": "Mga Setting ng Modelo", + "system": "Mga Setting ng Sistema", + "manageAndSettings": "Pamamahala at Mga Setting", + "OAPhub": "OAPhub", + "signOut": "Mag-sign Out", + "chat": { + "starredChat": "Mga Paborito", + "starChat": "I-star", + "unStarChat": "Alisin sa star", + "starFailed": "Nabigo ang pag-star", + "renameChat": "Palitan ang pangalan", + "renameFailed": "Nabigo ang pagpapalit ng pangalan", + "deleteChat": "Burahin" + } + }, + "setting": { + "tabs": { + "Tools": "Pamamahala ng MCP Tools", + "Model": "Provider ng modelo", + "Account": "Account", + "System": "Mga Setting ng Sistema" + } + }, + "tools": { + "title": "Pamamahala ng Tools (MCP)", + "editConfig": "I-edit ang Config", + "editConfigAlt": "I-edit ang MCP Server Configuration", + "configTitle": "MCP Server Configuration", + "save": "I-save", + "cancel": "Kanselahin", + "saveSuccess": "Matagumpay na na-save ang mga setting", + "saveFailed": "Nabigo ang pag-save ng mga setting", + "toggleFailed": "May naganap na error", + "reloadFailed": "May naganap na error sa {{toolName}}, nabigo ang pag-reload", + "reloadAllFailed": "May naganap na error sa {{number}} tool calls, nabigo ang pag-reload", + "openConfigFolder": "Config Folder", + "openConfigFolderAlt": "Buksan ang Config Folder", + "fetchFailed": "Nabigo ang pag-load ng mga tools", + "configFetchFailed": "Nabigo ang pag-load ng configuration", + "configSaveAborted": "Na-interrupt ang pag-save ng configuration", + "invalidJson": "Hindi wastong JSON format", + "updateFailed": "Nabigo ang pag-load ng {{serverName}}: {{error}}", + "installFailed": "Nabigo ang pag-install", + "startFailed": "Nabigo ang pagsisimula", + "toolMenu": { + "delete": "Burahin", + "edit": "I-edit", + "reload": "I-reload", + "detail": "Tingnan ang Mga Detalye" + }, + "delete": "Burahin", + "jsonCopy": "Kopyahin", + "jsonCopied": "Nakopya", + "jsonDownload": "I-download", + "deleteTitle": "Kumpirmahin ang pagbura ng {{mcp}} tool?", + "deleteAllTitle": "Kumpirmahin ang pagbura ng lahat ng mga tool?", + "fieldTitle": "Field", + "fieldTitleAlt": "Ang mga field ay karaniwang sumasagot sa karamihan ng mga pangangailangan, ngunit kung ang iyong mga setting ng MCP ay nangangailangan ng mga karagdagang field o iba't ibang uri, maaari mong direktang i-edit sa JSON TextArea sa kanan upang matugunan ang mga kinakailangan ng iyong program", + "initialTimeoutAlt": "Ang paunang oras ng paghihintay sa koneksyon ay nakatakda sa 10 segundo bilang default, ngunit maaaring itakda sa anumang floating-point number na 10 segundo o higit pa. Walang limitasyon sa bilang ng mga segundo. Inirerekomenda na isaayos ang value na ito kung ang server ay may mabagal na koneksyon.", + "initialTimeoutPlaceholder": "Ilagay ang Initial Timeout...", + "initialTimeoutError": "Mangyaring maglagay ng numero na mas malaki o katumbas ng 10", + "jsonDesc": "Mangyaring maglagay o mag-paste ng MCP Server Json sa field", + "addArg": "Magdagdag ng Argument", + "addEnv": "Magdagdag ng Environment Variable", + "jsonFormatError": { + "addFormat": "May error sa format ng configuration, pakisuri at itama ang format", + "format": "May error sa format ng configuration ng {{mcp}}, pakisuri at itama ang format", + "nameEmpty": "Hindi maaaring walang laman ang pangalan, mangyaring maglagay ng wastong pangalan", + "nameExist": "May umiiral nang config na may pangalang \"{{mcp}}\"", + "stringError": "Tool {{mcp}}: Ang field {{field}} ay dapat na string", + "numberError": "Tool {{mcp}}: Ang field {{field}} ay dapat na numero", + "floatError": "Tool {{mcp}}: Ang field {{field}} ay dapat na float", + "booleanError": "Tool {{mcp}}: Ang field {{field}} ay dapat na itakda sa true o false", + "arrayError": "Tool {{mcp}}: Ang field {{field}} ay dapat na ibigay bilang array", + "objectError": "Tool {{mcp}}: Ang field {{field}} ay dapat na ibigay bilang object", + "optionError": "Tool {{mcp}}: Ang field {{field}} ay maaari lamang na {{options}}", + "requiredError": "Tool {{mcp}}: Kinakailangan ang field {{field}}", + "jsonError": "Tool {{mcp}}: May error sa format ng JSON, pakisuri at itama ang format", + "toolNumberError": "Isang tool lamang ang maaaring itakda sa edit mode, mangyaring alisin ang iba pang non-tool items", + "enabled": "Tool {{mcp}}: Ang field enabled ay dapat na itakda sa true o false", + "command": "Tool {{mcp}}: Ang field command ay dapat na string", + "args": "Tool {{mcp}}: Ang field args ay dapat na ibigay bilang array", + "env": "Tool {{mcp}}: Ang field env ay dapat na ibigay bilang object", + "url": "Tool {{mcp}}: Ang field url ay dapat na string", + "transport": "Tool {{mcp}}: Ang field transport ay maaari lamang na {{options}}", + "initialTimeout": "Tool {{mcp}}: Ang field initialTimeout ay dapat na float", + "range": "Tool {{mcp}}: Ang value ng field {{field}} ay wala sa saklaw, pakisuri at itama ang value", + "minRange": "Tool {{mcp}}: Ang field {{field}} ay dapat na mas malaki o katumbas ng {{value}}", + "maxRange": "Tool {{mcp}}: Ang field {{field}} ay dapat na mas maliit o katumbas ng {{value}}" + }, + "namePlaceholder": "Ilagay ang pangalan...", + "commandPlaceholder": "Ilagay ang command...", + "argsPlaceholder": "Ilagay ang mga argument...", + "envKey": "Ilagay ang pangalan ng variable (Key)...", + "envValue": "Ilagay ang value ng variable (Value)...", + "inputKeyError": "Duplicate ang pangalan ng variable {{ name }}", + "urlPlaceholder": "Ilagay ang URL...", + "transportPlaceholder": "Pumili ng Transport...", + "providerSearchPlaceholder": "Ilagay ang search Provider...", + "noProviderSearchResult": "Walang nahanap na kaugnay na Provider", + "toogleToolAlt": "I-enable ang MCP Tools", + "logTitle": "Patakbuhin ang UVX Command", + "logProcessing": "Pinoproseso...", + "no_tool_title": "Walang Available na MCP Servers", + "no_oap_tool_message": { + "all": "Mangyaring pumili ng OAP MCP Server na gagamitin, o magdagdag ng custom MCP Server.", + "oap": "Mangyaring pumili ng OAP MCP Server na gagamitin.", + "custom": "Mangyaring magdagdag ng custom MCP Server." + }, + "no_tool_message": "Mangyaring magdagdag ng MCP Server.", + "tab": { + "all": "Lahat ng Tools", + "oap": "OAP Tools", + "custom": "Custom Tools" + }, + "oapStoreLinkAlt": "Tingnan ang Mga Detalye", + "subToolsCount": "Mga Tool na Naka-enable: {{count}} / {{total}}", + "disabledDescription": "Naka-disable", + "unsaved": { + "title": "Mga Hindi Na-save na Pagbabago", + "desc": "Mayroon kang mga hindi na-save na pagbabago. Kung aalis ka sa page na ito, mawawala ang mga pagbabago. Gusto mo bang magpatuloy?", + "cancel": "Kanselahin ang Mga Pagbabago", + "save": "I-save" + }, + "oauthAlert": "Mangyaring kumpirmahin na nagtitiwala ka sa connector na ito: ang connector na ito ay hindi pa na-verify ng Dive. Ikaw ay responsable para sa lahat ng operasyon na iyong ginagawa gamit ang Dive.", + "reload": { + "headerBtn": "I-reload", + "headerBtnAlt": "I-reload at I-update ang MCP Tools" + }, + "oap": { + "type": { + "all": "Lahat ng Tools", + "base": "Ipakita ang Base Lamang", + "pro": "Ipakita ang Pro Lamang" + }, + "sort": { + "title": "Ayusin", + "popular": "Sikat", + "new": "Bago" + }, + "tag": "Tag", + "no_search_data_title": "Walang nahanap na MCP Tools", + "no_search_data": "Walang nahanap na resulta sa paghahanap, mangyaring i-clear ang keyword sa paghahanap o isaayos ang mga kundisyon ng filter.", + "clear_filter": "I-clear ang Filter", + "hint": "Ang mga high-level MCP Servers ay nangangailangan ng pag-upgrade sa Pro version upang ma-install", + "high_cost_title": "I-enable ang High-Cost MCP Servers", + "high_cost_desc": "Pumili ka ng mga MCP Servers na kumokonsumo ng maraming tokens. Pakisuri kung sapat ang iyong paggamit ng plan.", + "headerBtnAlt": "Magdagdag / Tingnan ang OAP MCP Tools" + }, + "custom": { + "headerBtn": "Magdagdag / I-edit ang Config", + "headerBtnAlt": "Magdagdag / I-edit ang Custom Tools", + "listAdd": "Magdagdag ng MCP Server", + "titleAdd": "Magdagdag ng MCP Server", + "titleEdit": "I-edit ang {{tool}} MCP", + "titleEditJson": "Mga Setting ng MCP Tools" + } + }, + "modelConfig": { + "title": "Mga Setting ng Modelo", + "customInstructions": "Custom Prompt", + "customInstructionsPlaceholder": "Ilagay ang custom system prompt...", + "customInstructionsDescription": "Ang mga prompt na ito ay idadagdag sa dulo ng bawat system prompt ng request", + "saveInstructions": "I-save ang Mga Instruction", + "customRulesSaved": "Na-save ang mga custom instructions", + "customRulesFailed": "Nabigo ang pag-save ng mga custom instructions", + "modelDescription": "Pangalan ng modelo na gagamitin", + "modelDescriptionHint": "Pangalan ng modelo na gagamitin (Mangyaring maglagay muna ng API Key upang makita ang mga available na modelo)" + }, + "common": { + "close": "Isara", + "confirm": "Kumpirmahin", + "cancel": "Kanselahin", + "copy": "Kopyahin", + "copySuccess": "Nakopya", + "zoomInImage": "I-zoom In ang Imahe", + "copyImage": "Kopyahin ang Imahe", + "copyImageUrl": "Kopyahin ang URL ng Imahe", + "downloadImage": "I-download ang Imahe", + "login": "Mag-login", + "signup": "Mag-sign Up", + "save": "I-save", + "signout": "Mag-sign Out" + }, + "models": { + "title": "Mga Setting ng Modelo", + "newProvider": "+ Magdagdag ng Provider", + "parameters": "Mga Setting ng Parameter", + "instructionsSetting": "Mga Setting ng Instruction", + "listTitle": "I-configure ang Model Provider", + "optional": "(Opsyonal)", + "selfOptional": "(Opsyonal)", + "unSupportModelCount": "Pumili ka ng {{count}} mga modelo na hindi sinusuportahan", + "deleteTitle": "Kumpirmahin ang pagbura ng {{name}} Key?", + "deleteDescription": "Ang aksyon na ito ay hindi maaaring bawiin.", + "deleteAllTitle": "Kumpirmahin ang pagbura ng modelo?", + "deleteAllDescription": "Pagkatapos ng pagbura, walang magiging available na mga modelo para sa pag-uusap", + "deleteToast": "Nabura ang {{name}} Key", + "deleteFailed": "Nabigo ang pagbura ng Provider Authentication", + "providerMenu1": "I-edit ang Provider", + "providerMenu2": "Pamahalaan ang Modelo", + "providerMenu3": "Burahin", + "verifying": "Nag-ve-verify ng API Key at modelo...", + "verifyingAbort": "Na-interrupt ang pag-verify, mangyaring subukan muli sa ibang pagkakataon", + "apiKeyError": "Hindi wastong API Key, pakisuri at muling ilagay ang iyong API Key.", + "closeAllTitle": "Kumpirmahin ang pag-deactivate?", + "closeAllDescription": "Pagkatapos ng pag-deactivate, walang magiging available na mga modelo para sa pag-uusap", + "noModelAlertTitle": "Walang available na mga modelo!", + "noModelAlertDescription": "Lahat ng mga piniling modelo ay hindi sinusuportahan, hindi posible ang pag-uusap", + "selectModelPlaceHolder": "Pumili ng modelo...", + "noModelAlertOption": "Walang available na mga modelo", + "popupTitle": "Mga Available na Modelo", + "searchPlaceholder": "Maghanap ng mga modelo...", + "noResult": "Walang available na mga modelo", + "reloadModelList": "I-reload", + "modelSaved": "Na-save ang mga modelo", + "modelSaveFailed": "Nabigo ang pag-save ng mga modelo", + "parameterSaved": "Na-save ang mga parameter", + "parameterSaveFailed": "Nabigo ang pag-save ng mga parameter", + "ignored": "Laktawan ang pag-verify para sa modelo na ito", + "unSupportModel": "Hindi sinusuportahan ang modelo", + "unToolCallsSupport": "Hindi sinusuportahan ang Tool Calls", + "verify": "I-verify", + "verifyIgnore": "Huwag Pansinin", + "verifyIgnoreAlt": "Hindi na ipapakita ang paalala sa pag-verify", + "verifyNextTime": "Mamaya", + "verifyNextTimeAlt": "Tatanungin para sa pag-verify sa susunod", + "verifyTitle": "! Nakita ang {{count}} mga modelo na hindi pa na-verify", + "verifyDesc": "Ang mga sumusunod na modelo ay hindi pa na-verify. Gusto mo bang i-verify ang mga ito?", + "progressVerifying": "Isinasagawa ang pag-verify ng modelo, mangyaring maghintay...", + "verifyMenu": { + "advanced": "Mga Advanced Setting", + "verify": "I-verify ang Modelo", + "ignore": "Huwag Pansinin ang Pag-verify", + "delete": "Burahin ang Modelo" + }, + "customModelID": { + "add": "+ Custom Model ID", + "title": "Custom Model ID", + "placeholder": "Ilagay ang custom model ID...", + "Error": { + "empty": "Ang custom model ID ay hindi maaaring walang laman", + "exist": "Umiiral na ang custom model ID" + } + }, + "copyContent": "Kopyahin ang Content", + "editProviderTitle": "I-edit ang {{provider}} Config", + "hide": "Itago", + "display": "Ipakita", + "copy": "Kopyahin", + "modelSetting": "Mga Advanced Setting", + "streamingModeTooltip": "Ang Streaming Mode ay kapag tumutugon ang modelo, unti-unting ipinapakita ang content, sa halip na ipakita lahat nang sabay. Ang pag-off ng button, sa Non-Streaming Mode, ay maghihintay para sa modelo na buuin ang content nang buo at ipakita lahat nang sabay, iniiwasan ang mga isyu sa compatibility ng tool calls sa modelo.", + "streamingModeDescription": "Kontrolin kung paano ipinapakita ang mga tugon ng modelo", + "streamingModeAlert": "Paalala: Ang ilang mga modelo ay sumusuporta lamang sa tool calling sa Streaming Mode o Non-Streaming Mode. Inirerekomenda na lubos na maintindihan ang iyong mga pangangailangan bago isaayos ang parameter na ito.", + "customInput": "Custom Input", + "addCustomParameter": "Magdagdag ng Custom Parameter", + "parameterName": "Pangalan ng Parameter", + "parameterType": "Uri ng Parameter", + "parameterValue": "Value ng Parameter", + "parameterNameDescription": "Ilagay ang pangalan, tulad ng temperature", + "parameterTypeDescription": "Pumili ng uri", + "parameterValueDescription": "Mangyaring piliin muna ang uri ng parameter at pagkatapos ay ilagay ang value", + "parameterNameDuplicate": "Umiiral na ang pangalan ng parameter", + "parameterTypeInt": "Integer", + "parameterTypeFloat": "Float", + "parameterTypeString": "String", + "parameterTypeIntDescription": "Pinapayagang saklaw 0-1M", + "parameterTypeFloatDescription": "Pinapayagang saklaw 0.0-1.0", + "parameterTypeStringDescription": "Mangyaring maglagay ng string, tulad ng medium", + "reasoningLevelDescription": "Itakda ang lalim ng pag-iisip ng modelo", + "reasoningLevelTooltip": "Ang Low ay kumakatawan sa mabilis na tugon, nakatuon sa mga konklusyon at walang karagdagang mga detalye, na may direkta at simpleng pangangatwiran. Ang Medium ay nagbibigay ng tugon na may sapat na paliwanag sa lohika, sumasaklaw sa mga pangunahing impormasyon. Ang High ay nag-aalok ng malalim na tugon na may nakabalangkas at detalyadong pagsusuri at paliwanag.", + "tokenBudgetDescription": "Itakda ang value ng pangangatwiran ({{min}}~{{max}})", + "parameterVerify": "Pag-verify ng Parameter", + "verifyErrorInfo": "Mga Detalye ng Error sa Pag-verify", + "verifyErrorMsg": "Ang modelo ay hindi gumamit ng anumang mga tool sa panahon ng pag-verify, na maaaring dahil sa kakulangan ng suporta o hindi na-trigger. Kaya, hindi makumpirma kung sinusuportahan nito ang mga tool.", + "verifyStatusSuccess": "Matagumpay ang pag-verify ng modelo, na-enable na may orihinal na configuration", + "verifyStatusSuccessInPrompt": "Matagumpay ang pag-verify ng modelo, na-enable na may MCP Prompts", + "verifyUnexpectedFailed": "Nabigo ang pag-verify ng modelo, naganap ang hindi kilalang error, mangyaring subukan muli sa ibang pagkakataon", + "oapUsageLimit": "Naabot ang limitasyon sa paggamit, pansamantalang hindi available" + }, + "system": { + "title": "Mga Setting ng Sistema", + "language": "Wika ng Sistema", + "languageDefault": "Default ng Sistema", + "languageDescription": "Wika na ginagamit upang ipakita ang interface ng sistema. Ang wika na ginagamit sa modelo ay maaaring baguhin sa page ng mga setting ng modelo, ito ay tumutukoy sa wika na ipinapakita sa interface ng Dive", + "theme": "Dark Mode", + "themeDescription": "Mag-switch sa pagitan ng default ng sistema at dark mode", + "defaultInstructions": "speak in Filipino", + "autoDownload": "Auto Download ng Update", + "autoDownloadDescription": "Awtomatikong i-download ang bagong bersyon ng DIVE kapag nag-restart ang user o nag-click ng \"Upgrade\" button sa menu page, mae-enable ang bagong bersyon", + "autoLaunch": "Auto Launch", + "autoLaunchDescription": "Awtomatikong simulan ang Dive AI kapag nagsisimula ang sistema", + "minimalToTray": "I-minimize sa tray", + "minimalToTrayDescription": "Kapag isinasara ang window, ang program ay mai-minimize sa system tray sa halip na lumabas nang buo", + "loginTitle": "OAP Login", + "loginDescription": "Gumamit ng OpenAgentPlatform upang mag-login, walang kinakailangang technical background upang madaling ikonekta ang mga LLM, AI Agents at MCP Servers — Maranasan ang mga matalinong solusyon ngayon!", + "personalInformationTitle": "Personal na Impormasyon", + "defaultSystemPrompt": "Dive Default System Prompt", + "defaultSystemPromptDescription": "Ang Dive Default System Prompt ay ginagamit bilang default system prompt para sa chat. Sinasabi nito sa LLM na sinusuportahan ng Dive chat ang KaTeX / Markdown / Mermaid, atbp. Ang feature na ito ay umuubos ng ilang mga token, na maaaring gawing mas mabagal ang tugon kaysa sa prompt na walang system prompt. Sa kabilang banda, kung ito ay na-disable, ang kalidad ng tugon ng LLM ay maaaring bumaba", + "usageAnalytics": "Pumunta sa Dashboard page sa OAP Hub upang tingnan", + "usageAnalyticsTitle": "Analytics ng Paggamit", + "userEdit": "Pumunta sa Account page sa OAP Hub upang gumawa ng mga pagbabago", + "planSectionTitle": "Kasalukuyang paggamit ng plan", + "subscriptionDate": "Petsa ng subscription", + "remainingUsage": "Natitirang paggamit", + "usageWarningTitle": "Naabot ang limitasyon sa paggamit ng token.", + "usageWarning": "Ang quota ng Pro plan ay mare-reset sa susunod na buwan, o bumili ng mga token package para sa higit pang paggamit. Available pa rin ang Basic Models at MCP.", + "BaseSubscriptionDate": "Hindi mag-expire", + "BaseRemainingUsage": "Walang limitasyon", + "BaseUsageWarning": "Ang Base plan ay may kasamang access sa Basic Models at Basic MCPs. Upang gumamit ng iba pang mga modelo at MCP, mangyaring i-upgrade ang iyong plan mula sa Plan Page.", + "customPromptDescription": "Kung kailangan mo ng karagdagang custom instructions, mangyaring i-click ang \"Custom Prompt\" function sa ibaba upang i-set up ito.", + "customPromptButton": "Custom Prompt", + "tokenPackageTitle": "Paggamit ng token package", + "tokenPackageHint": "Ang mga token package ay walang expiration date at gagamitin lamang pagkatapos maubos ang monthly plan quota.", + "tokenPackageRemainingUsage": "Natitirang paggamit", + "tokenPackageWarningTitle": "Naubos ang token quota.", + "tokenPackageWarning": "Maaari mong dagdagan ang higit pang paggamit ng token sa OAPhub Dashboard page.", + "skipTlsVerifyWarning": "Babala sa seguridad: Ang pag-ignore sa pag-verify ng certificate ay maaaring bawasan ang seguridad ng koneksyon. Inirerekomenda na gamitin sa pinagkakatiwalaang network environment." + }, + "toast": { + "copiedToClipboard": "Nakopya sa clipboard", + "copyFailed": "Nabigo ang pagkopya", + "copiedImage": "Nakopya ang Imahe", + "downloadedImage": "Na-download ang Imahe" + }, + "keymap": { + "title": "Mga Keyboard Shortcut", + "events": { + "chat-input_submit": "Isumite ang Mensahe", + "chat-input_upload-file": "Mag-upload ng File", + "chat-input_focus": "I-focus ang Input", + "chat-input_paste-last-message": "I-paste ang Huling Mensahe", + "chat-message_copy-last": "Kopyahin ang Huling Mensahe", + "chat_delete": "Burahin ang Chat", + "global_new-chat": "Bagong Chat", + "global_toggle-sidebar": "I-toggle ang Sidebar", + "global_close-layer": "Isara ang Window", + "global_toggle-keymap-modal": "I-toggle ang Keyboard Shortcut Helper" + } + }, + "update": { + "downloading": "Nag-da-download...", + "readyToInstall": "Handa nang I-install", + "clickToInstall": "I-click upang I-install ang Update" + }, + "login": { + "subtitle": "Ang Dive AI ay isang open-source desktop application na walang tigil na nagsasama ng iba't ibang malalaking language model na sumusuporta sa mga function call. Sa pamamagitan ng malinis at intuitive na interface nito, madali mong makakausap ang mga cutting-edge na AI, mula sa pang-araw-araw na Q&A hanggang sa propesyonal na mga gawain, nakakakuha ng tumpak na mga tugon at ginagawa itong iyong matalinong katulong.", + "title1": "Gumamit ng Iyong Sariling Inihanda na Mga Modelo", + "description1": "Angkop para sa mga advanced na AI expert. Kung mayroon ka nang iyong sariling configuration na handa na, maging ito man ay lokal na Ollama, llama.cpp, o malayong Openrouter, OpenAI, Anthropic, o iba pang LLM API ng mga kumpanya ng AI, mangyaring gamitin ang opsyon na ito.", + "button1": "Pumunta sa Mga Setting ng Modelo", + "title2": "Gumamit ng OpenAgentPlatform", + "description2": "Ginagawang madali ng OAP para sa lahat na gumamit ng mga pinaka-advanced na serbisyo ng AI, na kumokonekta sa mga LLM, AI Agents, at MCP Servers nang hindi nangangailangan ng technical na kadalubhasaan. Tuklasin ang walang hanggang posibilidad ng AI at maranasan ang mga matalinong solusyon ngayon.", + "button2": "Magrehistro para sa OAP", + "button3": "Mag-login sa OAP" + }, + "InstallHostDependencies": { + "title": "Nag-da-download ng Host Dependencies...", + "retry": "Subukan Muli", + "stop": "Itigil", + "tip": "Kung may nangyaring error sa panahon ng pag-download, mangyaring isara muna ang window na ito at i-restart ang application upang muling i-download." + }, + "deeplink": { + "mcpInstallConfirm": "Magdagdag ng stdio MCP Service - Magdadagdag ka ng MCP sa pamamagitan ng sumusunod na command, mangyaring kumpirmahin:" + } +} + diff --git a/src/locales/fr/translation.json b/src/locales/fr/translation.json new file mode 100644 index 00000000..fea9eb9e --- /dev/null +++ b/src/locales/fr/translation.json @@ -0,0 +1,442 @@ +{ + "header": { + "title": "Dive AI", + "openSidebar": "Ouvrir la barre latérale", + "closeSidebar": "Fermer la barre latérale" + }, + "chat": { + "placeholder": "Envoyer un message...", + "newChat": "Nouvelle discussion", + "newChatTooltip": "Commencer une nouvelle conversation", + "history": "Historique", + "copyCode": "Copier", + "previewCode": "Cliquer pour prévisualiser", + "uploadFile": "Télécharger un fichier", + "send": "Envoyer", + "untitledChat": "Discussion sans titre", + "deleteChat": "Supprimer la discussion", + "deleteSuccess": "Discussion supprimée", + "deleteFailed": "Échec de la suppression", + "confirmDelete": "Confirmer la suppression", + "confirmDeleteDescription": "Une fois supprimée, la discussion ne peut pas être récupérée.", + "tools": { + "button": "Outils", + "enabledHint": "{{enabled}} outils activés", + "failedHint": "{{enabled}} outils activés, {{failed}} outils ont échoué" + }, + "abort": "Arrêter la génération", + "retry": "Réessayer", + "noModelAlert": "Aucun modèle disponible", + "noModelBanner": "Aucun modèle disponible, veuillez d'abord sélectionner un modèle", + "onLimit": "Vous avez atteint la limite d'utilisation du plan {{plan}}, les modèles oap ne peuvent pas être utilisés", + "modelSettings": "Paramètres du modèle", + "copy": "Copier", + "copied": "Copié", + "edit": "Modifier", + "editDescription": "La modification de ce message générera une nouvelle réponse", + "cancel": "Annuler", + "save": "Enregistrer", + "toolCalls": "🛠 Résultat de l'appel d'outil {{name}}", + "unsupportTools": "{{model}} ne prend pas en charge les appels d'outils", + "dragFiles": "Déposer les fichiers ici pour les ajouter au chat", + "tools-btn": { + "disableToast": "Appels d'outils désactivés", + "disable": "Désactiver les appels d'outils", + "enableToast": "Appels d'outils activés", + "enable": "Activer les appels d'outils" + } + }, + "welcome": { + "title": "Bienvenue sur Dive AI", + "subtitle": "Commencez votre conversation IA", + "startChat": "Démarrer la discussion" + }, + "setup": { + "title": "Configuration initiale", + "subtitle": "Veuillez configurer les paramètres du modèle", + "required": "Ce champ est obligatoire", + "submit": "Enregistrer les paramètres", + "provider": "Fournisseur de modèle", + "verify": "Vérifier le modèle", + "verifying": "Vérification en cours...", + "verifySuccess": "Vérification du modèle réussie", + "verifySuccessNoTool": "Vérification du modèle réussie, mais ne prend pas en charge les appels d'outils", + "verifyFailed": "Échec de la vérification du modèle", + "verifyError": "Erreur lors de la vérification", + "saveSuccess": "Paramètres enregistrés avec succès", + "saveFailed": "Échec de l'enregistrement des paramètres", + "back": "Retour", + "parameters": "Paramètres", + "topPDescription": "Le paramètre Top-P contrôle la plage de sélection des mots. Une valeur de 0 utilise la valeur par défaut ; des valeurs inférieures sélectionnent uniquement les mots à haute probabilité, ce qui donne des réponses conservatrices ; des valeurs plus élevées élargissent la plage de vocabulaire, ce qui conduit à des réponses plus variées.", + "temperatureDescription": "Le paramètre de température contrôle le caractère aléatoire des réponses. Une valeur de 0 utilise la valeur par défaut ; des valeurs inférieures produisent des réponses plus précises et stables ; des valeurs plus élevées génèrent des réponses plus créatives mais moins rigoureuses." + }, + "sidebar": { + "tools": "Gestion des outils (MCP)", + "settings": "Paramètres du modèle", + "update": "Mise à jour disponible", + "models": "Paramètres du modèle", + "system": "Paramètres système", + "manageAndSettings": "Gestion et paramètres", + "OAPhub": "OAPhub", + "signOut": "Se déconnecter", + "chat": { + "starredChat": "Favoris", + "starChat": "Ajouter aux favoris", + "unStarChat": "Retirer des favoris", + "starFailed": "Échec de l'ajout aux favoris", + "renameChat": "Renommer", + "renameFailed": "Échec du renommage", + "deleteChat": "Supprimer" + } + }, + "setting": { + "tabs": { + "Tools": "Gestion des outils MCP", + "Model": "Fournisseur de modèle", + "Account": "Compte", + "System": "Paramètres système" + } + }, + "tools": { + "title": "Gestion des outils (MCP)", + "editConfig": "Modifier la configuration", + "editConfigAlt": "Modifier la configuration du serveur MCP", + "configTitle": "Configuration du serveur MCP", + "save": "Enregistrer", + "cancel": "Annuler", + "saveSuccess": "Paramètres enregistrés avec succès", + "saveFailed": "Échec de l'enregistrement des paramètres", + "toggleFailed": "Une erreur s'est produite", + "reloadFailed": "{{toolName}} a rencontré une erreur, échec du rechargement", + "reloadAllFailed": "{{number}} appels d'outils ont rencontré une erreur, échec du rechargement", + "openConfigFolder": "Dossier de configuration", + "openConfigFolderAlt": "Ouvrir le dossier de configuration", + "fetchFailed": "Échec du chargement des outils", + "configFetchFailed": "Échec du chargement de la configuration", + "configSaveAborted": "Enregistrement de la configuration interrompu", + "invalidJson": "Format JSON invalide", + "updateFailed": "{{serverName}} échec du chargement : {{error}}", + "installFailed": "Échec de l'installation", + "startFailed": "Échec du démarrage", + "toolMenu": { + "delete": "Supprimer", + "edit": "Modifier", + "reload": "Recharger", + "detail": "Voir les détails" + }, + "delete": "Supprimer", + "jsonCopy": "Copier", + "jsonCopied": "Copié", + "jsonDownload": "Télécharger", + "deleteTitle": "Confirmer la suppression de l'outil {{mcp}} ?", + "deleteAllTitle": "Confirmer la suppression de tous les outils ?", + "fieldTitle": "Champ", + "fieldTitleAlt": "Les champs répondent généralement à la plupart des besoins, mais si vos paramètres MCP nécessitent des champs supplémentaires ou différents types, vous pouvez modifier directement dans la zone de texte JSON à droite pour répondre aux exigences de votre programme", + "initialTimeoutAlt": "Le temps d'attente de connexion initial est défini par défaut sur 10 secondes, mais peut être défini sur n'importe quel nombre décimal de 10 secondes ou plus. Il n'y a pas de limite sur le nombre de secondes. Il est recommandé d'ajuster cette valeur si le serveur a une connexion lente.", + "initialTimeoutPlaceholder": "Entrez le délai d'expiration initial...", + "initialTimeoutError": "Veuillez entrer un nombre supérieur ou égal à 10", + "jsonDesc": "Veuillez entrer ou coller le JSON du serveur MCP dans le champ", + "addArg": "Ajouter un argument", + "addEnv": "Ajouter une variable d'environnement", + "jsonFormatError": { + "addFormat": "Erreur de format de configuration, veuillez vérifier et corriger le format", + "format": "Erreur de format de configuration de {{mcp}}, veuillez vérifier et corriger le format", + "nameEmpty": "Le nom ne peut pas être vide, veuillez entrer un nom valide", + "nameExist": "Une configuration avec le nom \"{{mcp}}\" existe déjà", + "stringError": "Outil {{mcp}} : Le champ {{field}} doit être une chaîne", + "numberError": "Outil {{mcp}} : Le champ {{field}} doit être un nombre", + "floatError": "Outil {{mcp}} : Le champ {{field}} doit être un nombre décimal", + "booleanError": "Outil {{mcp}} : Le champ {{field}} doit être défini sur true ou false", + "arrayError": "Outil {{mcp}} : Le champ {{field}} doit être fourni sous forme de tableau", + "objectError": "Outil {{mcp}} : Le champ {{field}} doit être fourni sous forme d'objet", + "optionError": "Outil {{mcp}} : Le champ {{field}} ne peut être que {{options}}", + "requiredError": "Outil {{mcp}} : Le champ {{field}} est obligatoire", + "jsonError": "Outil {{mcp}} : Erreur de format JSON, veuillez vérifier et corriger le format", + "toolNumberError": "Un seul outil peut être défini en mode édition, veuillez supprimer les autres éléments non-outils", + "enabled": "Outil {{mcp}} : Le champ enabled doit être défini sur true ou false", + "command": "Outil {{mcp}} : Le champ command doit être une chaîne", + "args": "Outil {{mcp}} : Le champ args doit être fourni sous forme de tableau", + "env": "Outil {{mcp}} : Le champ env doit être fourni sous forme d'objet", + "url": "Outil {{mcp}} : Le champ url doit être une chaîne", + "transport": "Outil {{mcp}} : Le champ transport ne peut être que {{options}}", + "initialTimeout": "Outil {{mcp}} : Le champ initialTimeout doit être un nombre décimal", + "range": "Outil {{mcp}} : La valeur du champ {{field}} est hors limites, veuillez vérifier et corriger la valeur", + "minRange": "Outil {{mcp}} : Le champ {{field}} doit être supérieur ou égal à {{value}}", + "maxRange": "Outil {{mcp}} : Le champ {{field}} doit être inférieur ou égal à {{value}}" + }, + "namePlaceholder": "Entrez le nom...", + "commandPlaceholder": "Entrez la commande...", + "argsPlaceholder": "Entrez les arguments...", + "envKey": "Entrez le nom de la variable (Clé)...", + "envValue": "Entrez la valeur de la variable (Valeur)...", + "inputKeyError": "Nom de variable {{ name }} en double", + "urlPlaceholder": "Entrez l'URL...", + "transportPlaceholder": "Sélectionnez le transport...", + "providerSearchPlaceholder": "Entrez la recherche de fournisseur...", + "noProviderSearchResult": "Aucun fournisseur associé trouvé", + "toogleToolAlt": "Activer les outils MCP", + "logTitle": "Exécuter la commande UVX", + "logProcessing": "Traitement en cours...", + "no_tool_title": "Aucun serveur MCP disponible", + "no_oap_tool_message": { + "all": "Veuillez sélectionner un serveur MCP OAP à utiliser, ou ajouter un serveur MCP personnalisé.", + "oap": "Veuillez sélectionner un serveur MCP OAP à utiliser.", + "custom": "Veuillez ajouter un serveur MCP personnalisé." + }, + "no_tool_message": "Veuillez ajouter un serveur MCP.", + "tab": { + "all": "Tous les outils", + "oap": "Outils OAP", + "custom": "Outils personnalisés" + }, + "oapStoreLinkAlt": "Voir les détails", + "subToolsCount": "Outils activés : {{count}} / {{total}}", + "disabledDescription": "Désactivé", + "unsaved": { + "title": "Modifications non enregistrées", + "desc": "Vous avez des modifications non enregistrées. Si vous quittez cette page, les modifications seront perdues. Voulez-vous continuer ?", + "cancel": "Annuler les modifications", + "save": "Enregistrer" + }, + "oauthAlert": "Veuillez confirmer que vous faites confiance à ce connecteur : ce connecteur n'a pas été vérifié par Dive. Vous êtes responsable de toutes les opérations que vous effectuez avec Dive.", + "reload": { + "headerBtn": "Recharger", + "headerBtnAlt": "Recharger et mettre à jour les outils MCP" + }, + "oap": { + "type": { + "all": "Tous les outils", + "base": "Afficher uniquement Base", + "pro": "Afficher uniquement Pro" + }, + "sort": { + "title": "Trier", + "popular": "Populaire", + "new": "Nouveau" + }, + "tag": "Étiquette", + "no_search_data_title": "Aucun outil MCP trouvé", + "no_search_data": "Aucun résultat de recherche trouvé, veuillez effacer le mot-clé de recherche ou ajuster les conditions de filtre.", + "clear_filter": "Effacer le filtre", + "hint": "Les serveurs MCP de haut niveau nécessitent une mise à niveau vers la version Pro pour l'installation", + "high_cost_title": "Activer les serveurs MCP à coût élevé", + "high_cost_desc": "Vous avez sélectionné des serveurs MCP qui consomment beaucoup de jetons. Veuillez vérifier si votre utilisation du plan est suffisante.", + "headerBtnAlt": "Ajouter / Afficher les outils MCP OAP" + }, + "custom": { + "headerBtn": "Ajouter / Modifier la configuration", + "headerBtnAlt": "Ajouter / Modifier les outils personnalisés", + "listAdd": "Ajouter un serveur MCP", + "titleAdd": "Ajouter un serveur MCP", + "titleEdit": "Modifier {{tool}} MCP", + "titleEditJson": "Paramètres des outils MCP" + } + }, + "modelConfig": { + "title": "Paramètres du modèle", + "customInstructions": "Invite personnalisée", + "customInstructionsPlaceholder": "Entrez l'invite système personnalisée...", + "customInstructionsDescription": "Ces invites seront ajoutées à la fin de l'invite système de chaque demande", + "saveInstructions": "Enregistrer les instructions", + "customRulesSaved": "Instructions personnalisées enregistrées", + "customRulesFailed": "Échec de l'enregistrement des instructions personnalisées", + "modelDescription": "Nom du modèle à utiliser", + "modelDescriptionHint": "Nom du modèle à utiliser (Veuillez d'abord entrer la clé API pour voir les modèles disponibles)" + }, + "common": { + "close": "Fermer", + "confirm": "Confirmer", + "cancel": "Annuler", + "copy": "Copier", + "copySuccess": "Copié", + "zoomInImage": "Agrandir l'image", + "copyImage": "Copier l'image", + "copyImageUrl": "Copier l'URL de l'image", + "downloadImage": "Télécharger l'image", + "login": "Connexion", + "signup": "S'inscrire", + "save": "Enregistrer", + "signout": "Se déconnecter" + }, + "models": { + "title": "Paramètres du modèle", + "newProvider": "+ Ajouter un fournisseur", + "parameters": "Paramètres des paramètres", + "instructionsSetting": "Paramètres des instructions", + "listTitle": "Configurer le fournisseur de modèle", + "optional": "(Optionnel)", + "selfOptional": "(Optionnel)", + "unSupportModelCount": "Vous avez sélectionné {{count}} modèles non pris en charge", + "deleteTitle": "Confirmer la suppression de la clé {{name}} ?", + "deleteDescription": "Cette action ne peut pas être annulée.", + "deleteAllTitle": "Confirmer la suppression du modèle ?", + "deleteAllDescription": "Après la suppression, aucun modèle ne sera disponible pour la conversation", + "deleteToast": "Clé {{name}} supprimée", + "deleteFailed": "Échec de la suppression de l'authentification du fournisseur", + "providerMenu1": "Modifier le fournisseur", + "providerMenu2": "Gérer le modèle", + "providerMenu3": "Supprimer", + "verifying": "Vérification de la clé API et du modèle...", + "verifyingAbort": "Vérification interrompue, veuillez réessayer plus tard", + "apiKeyError": "Clé API invalide, veuillez vérifier et ressaisir votre clé API.", + "closeAllTitle": "Confirmer la désactivation ?", + "closeAllDescription": "Après la désactivation, aucun modèle ne sera disponible pour la conversation", + "noModelAlertTitle": "Aucun modèle disponible !", + "noModelAlertDescription": "Tous les modèles sélectionnés ne sont pas pris en charge, la conversation n'est pas possible", + "selectModelPlaceHolder": "Sélectionner le modèle...", + "noModelAlertOption": "Aucun modèle disponible", + "popupTitle": "Modèles disponibles", + "searchPlaceholder": "Rechercher des modèles...", + "noResult": "Aucun modèle disponible", + "reloadModelList": "Recharger", + "modelSaved": "Modèles enregistrés", + "modelSaveFailed": "Échec de l'enregistrement des modèles", + "parameterSaved": "Paramètres enregistrés", + "parameterSaveFailed": "Échec de l'enregistrement des paramètres", + "ignored": "Ignorer la vérification pour ce modèle", + "unSupportModel": "Modèle non pris en charge", + "unToolCallsSupport": "Appels d'outils non pris en charge", + "verify": "Vérifier", + "verifyIgnore": "Ignorer", + "verifyIgnoreAlt": "Le rappel de vérification ne sera plus affiché", + "verifyNextTime": "Plus tard", + "verifyNextTimeAlt": "Demandera la vérification la prochaine fois", + "verifyTitle": "! {{count}} modèles non vérifiés détectés", + "verifyDesc": "Les modèles suivants ne sont pas vérifiés. Souhaitez-vous les vérifier ?", + "progressVerifying": "Vérification du modèle en cours, veuillez patienter...", + "verifyMenu": { + "advanced": "Paramètres avancés", + "verify": "Vérifier le modèle", + "ignore": "Ignorer la vérification", + "delete": "Supprimer le modèle" + }, + "customModelID": { + "add": "+ ID de modèle personnalisé", + "title": "ID de modèle personnalisé", + "placeholder": "Entrez l'ID de modèle personnalisé...", + "Error": { + "empty": "L'ID de modèle personnalisé ne peut pas être vide", + "exist": "L'ID de modèle personnalisé existe déjà" + } + }, + "copyContent": "Copier le contenu", + "editProviderTitle": "Modifier la configuration de {{provider}}", + "hide": "Masquer", + "display": "Afficher", + "copy": "Copier", + "modelSetting": "Paramètres avancés", + "streamingModeTooltip": "Le mode streaming est lorsque le modèle répond, il affiche le contenu progressivement, au lieu de l'afficher en une seule fois. Désactiver le bouton, en mode non-streaming, attendra que le modèle génère le contenu complètement et l'affichera en une seule fois, évitant les problèmes de compatibilité avec les appels d'outils dans le modèle.", + "streamingModeDescription": "Contrôler l'affichage des réponses du modèle", + "streamingModeAlert": "Rappel : Certains modèles ne prennent en charge l'appel d'outils qu'en mode streaming ou en mode non-streaming. Il est recommandé de bien comprendre vos besoins avant d'ajuster ce paramètre.", + "customInput": "Entrée personnalisée", + "addCustomParameter": "Ajouter un paramètre personnalisé", + "parameterName": "Nom du paramètre", + "parameterType": "Type de paramètre", + "parameterValue": "Valeur du paramètre", + "parameterNameDescription": "Entrez le nom, comme température", + "parameterTypeDescription": "Sélectionner le type", + "parameterValueDescription": "Veuillez d'abord sélectionner le type de paramètre puis entrer la valeur", + "parameterNameDuplicate": "Le nom du paramètre existe déjà", + "parameterTypeInt": "Entier", + "parameterTypeFloat": "Décimal", + "parameterTypeString": "Chaîne", + "parameterTypeIntDescription": "Plage autorisée 0-1M", + "parameterTypeFloatDescription": "Plage autorisée 0.0-1.0", + "parameterTypeStringDescription": "Veuillez entrer une chaîne, comme medium", + "reasoningLevelDescription": "Définir la profondeur de réflexion du modèle", + "reasoningLevelTooltip": "Faible représente une réponse rapide, se concentrant sur les conclusions et sans détails supplémentaires, avec un raisonnement direct et simple. Moyen fournit une réponse avec une explication logique suffisante, couvrant les informations clés. Élevé offre une réponse approfondie avec une analyse et une explication structurées et détaillées.", + "tokenBudgetDescription": "Définir la valeur de raisonnement ({{min}}~{{max}})", + "parameterVerify": "Vérification des paramètres", + "verifyErrorInfo": "Détails de l'erreur de vérification", + "verifyErrorMsg": "Le modèle n'a utilisé aucun outil lors de la vérification, ce qui peut être dû à son manque de prise en charge ou à son non-déclenchement. Par conséquent, il n'est pas possible de confirmer s'il prend en charge les outils.", + "verifyStatusSuccess": "Vérification du modèle réussie, activé avec la configuration d'origine", + "verifyStatusSuccessInPrompt": "Vérification du modèle réussie, activé avec MCP Prompts", + "verifyUnexpectedFailed": "Échec de la vérification du modèle, une erreur inconnue s'est produite, veuillez réessayer plus tard", + "oapUsageLimit": "Limite d'utilisation atteinte, temporairement indisponible" + }, + "system": { + "title": "Paramètres système", + "language": "Langue du système", + "languageDefault": "Par défaut du système", + "languageDescription": "Langue utilisée pour afficher l'interface système. La langue utilisée dans le modèle peut être modifiée dans la page des paramètres du modèle, cela fait référence à la langue affichée sur l'interface Dive", + "theme": "Mode sombre", + "themeDescription": "Basculer entre le mode par défaut du système et le mode sombre", + "defaultInstructions": "speak in French", + "autoDownload": "Téléchargement automatique des mises à jour", + "autoDownloadDescription": "Télécharger automatiquement la nouvelle version de DIVE lorsque l'utilisateur redémarre ou clique sur le bouton \"Mise à niveau\" sur la page de menu, la nouvelle version sera activée", + "autoLaunch": "Lancement automatique", + "autoLaunchDescription": "Démarrer automatiquement Dive AI au démarrage du système", + "minimalToTray": "Réduire dans la barre d'état", + "minimalToTrayDescription": "Lors de la fermeture de la fenêtre, le programme se réduira dans la barre d'état système au lieu de quitter complètement", + "loginTitle": "Connexion OAP", + "loginDescription": "Utilisez OpenAgentPlatform pour vous connecter, aucune expérience technique n'est requise pour connecter facilement les LLM, les agents IA et les serveurs MCP — Découvrez les solutions intelligentes maintenant !", + "personalInformationTitle": "Informations personnelles", + "defaultSystemPrompt": "Invite système par défaut de Dive", + "defaultSystemPromptDescription": "L'invite système par défaut de Dive est utilisée comme invite système par défaut pour le chat. Elle indique au LLM que le chat Dive prend en charge KaTeX / Markdown / Mermaid, etc. Cette fonctionnalité consomme certains jetons, ce qui peut ralentir la réponse par rapport à l'invite sans invite système. D'autre part, si elle est désactivée, la qualité de la réponse du LLM peut diminuer", + "usageAnalytics": "Aller à la page Tableau de bord dans OAP Hub pour voir", + "usageAnalyticsTitle": "Analyses d'utilisation", + "userEdit": "Aller à la page Compte dans OAP Hub pour apporter des modifications", + "planSectionTitle": "Utilisation du plan actuel", + "subscriptionDate": "Date d'abonnement", + "remainingUsage": "Utilisation restante", + "usageWarningTitle": "Limite d'utilisation de jetons atteinte.", + "usageWarning": "Le quota du plan Pro se réinitialise le mois prochain, ou achetez des packages de jetons pour plus d'utilisation. Les modèles de base et MCP sont toujours disponibles.", + "BaseSubscriptionDate": "N'expire jamais", + "BaseRemainingUsage": "Aucune limite", + "BaseUsageWarning": "Le plan Base comprend l'accès aux modèles de base et aux MCP de base. Pour utiliser d'autres modèles et MCP, veuillez mettre à niveau votre plan depuis la page Plan.", + "customPromptDescription": "Si vous avez besoin d'instructions personnalisées supplémentaires, veuillez cliquer sur la fonction \"Invite personnalisée\" ci-dessous pour la configurer.", + "customPromptButton": "Invite personnalisée", + "tokenPackageTitle": "Utilisation du package de jetons", + "tokenPackageHint": "Les packages de jetons n'ont pas de date d'expiration et ne seront utilisés qu'après l'épuisement du quota mensuel du plan.", + "tokenPackageRemainingUsage": "Utilisation restante", + "tokenPackageWarningTitle": "Quota de jetons épuisé.", + "tokenPackageWarning": "Vous pouvez reconstituer plus d'utilisation de jetons sur la page Tableau de bord d'OAPhub.", + "skipTlsVerifyWarning": "Avertissement de sécurité : Ignorer la vérification du certificat peut réduire la sécurité de la connexion. Il est recommandé de l'utiliser dans des environnements réseau de confiance." + }, + "toast": { + "copiedToClipboard": "Copié dans le presse-papiers", + "copyFailed": "Échec de la copie", + "copiedImage": "Image copiée", + "downloadedImage": "Image téléchargée" + }, + "keymap": { + "title": "Raccourcis clavier", + "events": { + "chat-input_submit": "Soumettre le message", + "chat-input_upload-file": "Télécharger un fichier", + "chat-input_focus": "Focaliser sur l'entrée", + "chat-input_paste-last-message": "Coller le dernier message", + "chat-message_copy-last": "Copier le dernier message", + "chat_delete": "Supprimer la discussion", + "global_new-chat": "Nouvelle discussion", + "global_toggle-sidebar": "Basculer la barre latérale", + "global_close-layer": "Fermer la fenêtre", + "global_toggle-keymap-modal": "Basculer l'aide des raccourcis clavier" + } + }, + "update": { + "downloading": "Téléchargement en cours...", + "readyToInstall": "Prêt à installer", + "clickToInstall": "Cliquer pour installer la mise à jour" + }, + "login": { + "subtitle": "Dive AI est une application de bureau open-source qui intègre de manière transparente divers grands modèles de langage prenant en charge les appels de fonction. Grâce à son interface claire et intuitive, vous pouvez facilement converser avec l'IA de pointe, des questions quotidiennes aux tâches professionnelles, obtenir des réponses précises et en faire votre assistant intelligent.", + "title1": "Utiliser vos propres modèles préparés", + "description1": "Convient aux experts en IA avancés. Si vous avez déjà votre propre configuration prête, qu'il s'agisse d'Ollama local, llama.cpp ou d'API LLM distantes Openrouter, OpenAI, Anthropic ou d'autres sociétés d'IA, veuillez utiliser cette option.", + "button1": "Aller aux paramètres du modèle", + "title2": "Utiliser OpenAgentPlatform", + "description2": "OAP permet à chacun d'utiliser facilement les services d'IA les plus avancés, en connectant les LLM, les agents IA et les serveurs MCP sans nécessiter d'expertise technique. Explorez les possibilités illimitées de l'IA et découvrez les solutions intelligentes maintenant.", + "button2": "S'inscrire à OAP", + "button3": "Se connecter à OAP" + }, + "InstallHostDependencies": { + "title": "Téléchargement des dépendances de l'hôte...", + "retry": "Réessayer", + "stop": "Arrêter", + "tip": "Si une erreur se produit pendant le téléchargement, veuillez d'abord fermer cette fenêtre et redémarrer l'application pour retélécharger." + }, + "deeplink": { + "mcpInstallConfirm": "Ajouter le service MCP stdio - Vous ajouterez MCP via la commande suivante, veuillez confirmer :" + } +} + diff --git a/src/locales/id/translation.json b/src/locales/id/translation.json new file mode 100644 index 00000000..122a42ae --- /dev/null +++ b/src/locales/id/translation.json @@ -0,0 +1,442 @@ +{ + "header": { + "title": "Dive AI", + "openSidebar": "Buka sidebar", + "closeSidebar": "Tutup sidebar" + }, + "chat": { + "placeholder": "Kirim pesan...", + "newChat": "Obrolan Baru", + "newChatTooltip": "Mulai percakapan baru", + "history": "Riwayat", + "copyCode": "Salin", + "previewCode": "Klik untuk pratinjau", + "uploadFile": "Unggah File", + "send": "Kirim", + "untitledChat": "Obrolan Tanpa Judul", + "deleteChat": "Hapus Obrolan", + "deleteSuccess": "Obrolan dihapus", + "deleteFailed": "Penghapusan gagal", + "confirmDelete": "Konfirmasi Penghapusan", + "confirmDeleteDescription": "Setelah dihapus, obrolan tidak dapat dipulihkan.", + "tools": { + "button": "Alat", + "enabledHint": "{{enabled}} alat diaktifkan", + "failedHint": "{{enabled}} alat diaktifkan, {{failed}} alat gagal" + }, + "abort": "Hentikan Pembuat", + "retry": "Coba Lagi", + "noModelAlert": "Tidak ada model yang tersedia", + "noModelBanner": "Tidak ada model yang tersedia, pilih model terlebih dahulu", + "onLimit": "Anda telah mencapai batas penggunaan paket {{plan}}, model oap tidak dapat digunakan", + "modelSettings": "Pengaturan Model", + "copy": "Salin", + "copied": "Disalin", + "edit": "Edit", + "editDescription": "Mengedit pesan ini akan menghasilkan respons baru", + "cancel": "Batal", + "save": "Simpan", + "toolCalls": "🛠 Hasil Panggilan Alat {{name}}", + "unsupportTools": "{{model}} tidak mendukung Panggilan Alat", + "dragFiles": "Lepaskan file di sini untuk ditambahkan ke obrolan", + "tools-btn": { + "disableToast": "Panggilan Alat dinonaktifkan", + "disable": "Nonaktifkan Panggilan Alat", + "enableToast": "Panggilan Alat diaktifkan", + "enable": "Aktifkan Panggilan Alat" + } + }, + "welcome": { + "title": "Selamat datang di Dive AI", + "subtitle": "Mulai percakapan AI Anda", + "startChat": "Mulai Obrolan" + }, + "setup": { + "title": "Pengaturan Awal", + "subtitle": "Silakan konfigurasikan pengaturan model", + "required": "Bidang ini wajib diisi", + "submit": "Simpan Pengaturan", + "provider": "Penyedia Model", + "verify": "Verifikasi Model", + "verifying": "Memverifikasi...", + "verifySuccess": "Verifikasi model berhasil", + "verifySuccessNoTool": "Verifikasi model berhasil, tetapi tidak mendukung Panggilan Alat", + "verifyFailed": "Verifikasi model gagal", + "verifyError": "Terjadi kesalahan saat verifikasi", + "saveSuccess": "Pengaturan berhasil disimpan", + "saveFailed": "Gagal menyimpan pengaturan", + "back": "Kembali", + "parameters": "Parameter", + "topPDescription": "Parameter Top-P mengontrol rentang pemilihan kata. Nilai 0 menggunakan nilai default; nilai lebih rendah hanya memilih kata dengan probabilitas tinggi, menghasilkan respons konservatif; nilai lebih tinggi memperluas rentang kosakata, menghasilkan respons yang lebih bervariasi.", + "temperatureDescription": "Parameter temperatur mengontrol keacakan respons. Nilai 0 menggunakan nilai default; nilai lebih rendah menghasilkan respons yang lebih tepat dan stabil; nilai lebih tinggi menghasilkan respons yang lebih kreatif tetapi kurang ketat." + }, + "sidebar": { + "tools": "Manajemen Alat (MCP)", + "settings": "Pengaturan Model", + "update": "Pembaruan tersedia", + "models": "Pengaturan Model", + "system": "Pengaturan Sistem", + "manageAndSettings": "Manajemen dan Pengaturan", + "OAPhub": "OAPhub", + "signOut": "Keluar", + "chat": { + "starredChat": "Favorit", + "starChat": "Tambahkan ke Favorit", + "unStarChat": "Hapus dari Favorit", + "starFailed": "Gagal menambahkan ke favorit", + "renameChat": "Ubah Nama", + "renameFailed": "Ubah nama gagal", + "deleteChat": "Hapus" + } + }, + "setting": { + "tabs": { + "Tools": "Manajemen Alat MCP", + "Model": "Penyedia model", + "Account": "Akun", + "System": "Pengaturan Sistem" + } + }, + "tools": { + "title": "Manajemen Alat (MCP)", + "editConfig": "Edit Konfigurasi", + "editConfigAlt": "Edit Konfigurasi Server MCP", + "configTitle": "Konfigurasi Server MCP", + "save": "Simpan", + "cancel": "Batal", + "saveSuccess": "Pengaturan berhasil disimpan", + "saveFailed": "Gagal menyimpan pengaturan", + "toggleFailed": "Terjadi kesalahan", + "reloadFailed": "{{toolName}} terjadi kesalahan, gagal memuat ulang", + "reloadAllFailed": "{{number}} panggilan alat terjadi kesalahan, gagal memuat ulang", + "openConfigFolder": "Folder Konfigurasi", + "openConfigFolderAlt": "Buka Folder Konfigurasi", + "fetchFailed": "Gagal memuat alat", + "configFetchFailed": "Gagal memuat konfigurasi", + "configSaveAborted": "Penyimpanan konfigurasi dibatalkan", + "invalidJson": "Format JSON tidak valid", + "updateFailed": "{{serverName}} gagal memuat: {{error}}", + "installFailed": "Instalasi gagal", + "startFailed": "Gagal memulai", + "toolMenu": { + "delete": "Hapus", + "edit": "Edit", + "reload": "Muat Ulang", + "detail": "Lihat Detail" + }, + "delete": "Hapus", + "jsonCopy": "Salin", + "jsonCopied": "Disalin", + "jsonDownload": "Unduh", + "deleteTitle": "Konfirmasi penghapusan alat {{mcp}}?", + "deleteAllTitle": "Konfirmasi penghapusan semua alat?", + "fieldTitle": "Bidang", + "fieldTitleAlt": "Bidang biasanya memenuhi sebagian besar kebutuhan, tetapi jika pengaturan MCP Anda memerlukan bidang tambahan atau jenis yang berbeda, Anda dapat mengedit langsung di area teks JSON di sebelah kanan untuk memenuhi persyaratan program Anda", + "initialTimeoutAlt": "Waktu tunggu koneksi awal diatur ke 10 detik secara default, tetapi dapat diatur ke angka desimal 10 detik atau lebih. Tidak ada batasan jumlah detik. Disarankan untuk menyesuaikan nilai ini jika server memiliki koneksi lambat.", + "initialTimeoutPlaceholder": "Masukkan Timeout Awal...", + "initialTimeoutError": "Silakan masukkan angka yang lebih besar atau sama dengan 10", + "jsonDesc": "Silakan masukkan atau tempel JSON Server MCP di bidang", + "addArg": "Tambah Argumen", + "addEnv": "Tambah Variabel Lingkungan", + "jsonFormatError": { + "addFormat": "Kesalahan format konfigurasi, silakan periksa dan perbaiki format", + "format": "Kesalahan format konfigurasi {{mcp}}, silakan periksa dan perbaiki format", + "nameEmpty": "Nama tidak boleh kosong, silakan masukkan nama yang valid", + "nameExist": "Konfigurasi dengan nama \"{{mcp}}\" sudah ada", + "stringError": "Alat {{mcp}}: Bidang {{field}} harus berupa string", + "numberError": "Alat {{mcp}}: Bidang {{field}} harus berupa angka", + "floatError": "Alat {{mcp}}: Bidang {{field}} harus berupa angka desimal", + "booleanError": "Alat {{mcp}}: Bidang {{field}} harus diatur ke true atau false", + "arrayError": "Alat {{mcp}}: Bidang {{field}} harus disediakan sebagai array", + "objectError": "Alat {{mcp}}: Bidang {{field}} harus disediakan sebagai objek", + "optionError": "Alat {{mcp}}: Bidang {{field}} hanya bisa {{options}}", + "requiredError": "Alat {{mcp}}: Bidang {{field}} wajib diisi", + "jsonError": "Alat {{mcp}}: Kesalahan format JSON, silakan periksa dan perbaiki format", + "toolNumberError": "Hanya satu alat yang dapat diatur dalam mode edit, silakan hapus item non-alat lainnya", + "enabled": "Alat {{mcp}}: Bidang enabled harus diatur ke true atau false", + "command": "Alat {{mcp}}: Bidang command harus berupa string", + "args": "Alat {{mcp}}: Bidang args harus disediakan sebagai array", + "env": "Alat {{mcp}}: Bidang env harus disediakan sebagai objek", + "url": "Alat {{mcp}}: Bidang url harus berupa string", + "transport": "Alat {{mcp}}: Bidang transport hanya bisa {{options}}", + "initialTimeout": "Alat {{mcp}}: Bidang initialTimeout harus berupa angka desimal", + "range": "Alat {{mcp}}: Nilai bidang {{field}} berada di luar jangkauan, silakan periksa dan perbaiki nilai", + "minRange": "Alat {{mcp}}: Bidang {{field}} harus lebih besar atau sama dengan {{value}}", + "maxRange": "Alat {{mcp}}: Bidang {{field}} harus lebih kecil atau sama dengan {{value}}" + }, + "namePlaceholder": "Masukkan nama...", + "commandPlaceholder": "Masukkan perintah...", + "argsPlaceholder": "Masukkan argumen...", + "envKey": "Masukkan nama variabel (Kunci)...", + "envValue": "Masukkan nilai variabel (Nilai)...", + "inputKeyError": "Nama variabel {{ name }} duplikat", + "urlPlaceholder": "Masukkan URL...", + "transportPlaceholder": "Pilih transport...", + "providerSearchPlaceholder": "Masukkan pencarian Penyedia...", + "noProviderSearchResult": "Tidak ditemukan penyedia terkait", + "toogleToolAlt": "Aktifkan Alat MCP", + "logTitle": "Jalankan Perintah UVX", + "logProcessing": "Memproses...", + "no_tool_title": "Tidak Ada Server MCP yang Tersedia", + "no_oap_tool_message": { + "all": "Silakan pilih Server MCP OAP untuk digunakan, atau tambahkan Server MCP khusus.", + "oap": "Silakan pilih Server MCP OAP untuk digunakan.", + "custom": "Silakan tambahkan Server MCP khusus." + }, + "no_tool_message": "Silakan tambahkan Server MCP.", + "tab": { + "all": "Semua Alat", + "oap": "Alat OAP", + "custom": "Alat Khusus" + }, + "oapStoreLinkAlt": "Lihat Detail", + "subToolsCount": "Alat Diaktifkan: {{count}} / {{total}}", + "disabledDescription": "Dinonaktifkan", + "unsaved": { + "title": "Perubahan Tidak Disimpan", + "desc": "Anda memiliki perubahan yang belum disimpan. Jika Anda meninggalkan halaman ini, perubahan akan hilang. Apakah Anda ingin melanjutkan?", + "cancel": "Batalkan Perubahan", + "save": "Simpan" + }, + "oauthAlert": "Silakan konfirmasi bahwa Anda mempercayai konektor ini: konektor ini belum diverifikasi oleh Dive. Anda bertanggung jawab atas semua operasi yang Anda lakukan dengan Dive.", + "reload": { + "headerBtn": "Muat Ulang", + "headerBtnAlt": "Muat Ulang dan Perbarui Alat MCP" + }, + "oap": { + "type": { + "all": "Semua Alat", + "base": "Tampilkan Base Saja", + "pro": "Tampilkan Pro Saja" + }, + "sort": { + "title": "Urutkan", + "popular": "Populer", + "new": "Baru" + }, + "tag": "Tag", + "no_search_data_title": "Tidak ditemukan Alat MCP", + "no_search_data": "Tidak ditemukan hasil pencarian, silakan hapus kata kunci pencarian atau sesuaikan kondisi filter.", + "clear_filter": "Hapus Filter", + "hint": "Server MCP tingkat tinggi memerlukan upgrade ke versi Pro untuk instalasi", + "high_cost_title": "Aktifkan Server MCP Berbiaya Tinggi", + "high_cost_desc": "Anda telah memilih Server MCP yang mengonsumsi banyak token. Silakan periksa apakah penggunaan paket Anda mencukupi.", + "headerBtnAlt": "Tambah / Lihat Alat MCP OAP" + }, + "custom": { + "headerBtn": "Tambah / Edit Konfigurasi", + "headerBtnAlt": "Tambah / Edit Alat Khusus", + "listAdd": "Tambah Server MCP", + "titleAdd": "Tambah Server MCP", + "titleEdit": "Edit {{tool}} MCP", + "titleEditJson": "Pengaturan Alat MCP" + } + }, + "modelConfig": { + "title": "Pengaturan Model", + "customInstructions": "Prompt Khusus", + "customInstructionsPlaceholder": "Masukkan prompt sistem khusus...", + "customInstructionsDescription": "Prompt ini akan ditambahkan di akhir prompt sistem setiap permintaan", + "saveInstructions": "Simpan Instruksi", + "customRulesSaved": "Instruksi khusus disimpan", + "customRulesFailed": "Gagal menyimpan instruksi khusus", + "modelDescription": "Nama model untuk digunakan", + "modelDescriptionHint": "Nama model untuk digunakan (Silakan masukkan API Key terlebih dahulu untuk melihat model yang tersedia)" + }, + "common": { + "close": "Tutup", + "confirm": "Konfirmasi", + "cancel": "Batal", + "copy": "Salin", + "copySuccess": "Disalin", + "zoomInImage": "Perbesar Gambar", + "copyImage": "Salin Gambar", + "copyImageUrl": "Salin URL Gambar", + "downloadImage": "Unduh Gambar", + "login": "Masuk", + "signup": "Daftar", + "save": "Simpan", + "signout": "Keluar" + }, + "models": { + "title": "Pengaturan Model", + "newProvider": "+ Tambah Penyedia", + "parameters": "Pengaturan Parameter", + "instructionsSetting": "Pengaturan Instruksi", + "listTitle": "Konfigurasikan Penyedia Model", + "optional": "(Opsional)", + "selfOptional": "(Opsional)", + "unSupportModelCount": "Anda telah memilih {{count}} model yang tidak didukung", + "deleteTitle": "Konfirmasi penghapusan Key {{name}}?", + "deleteDescription": "Tindakan ini tidak dapat dibatalkan.", + "deleteAllTitle": "Konfirmasi penghapusan model?", + "deleteAllDescription": "Setelah dihapus, tidak ada model yang tersedia untuk percakapan", + "deleteToast": "Key {{name}} dihapus", + "deleteFailed": "Gagal menghapus Autentikasi Penyedia", + "providerMenu1": "Edit Penyedia", + "providerMenu2": "Kelola Model", + "providerMenu3": "Hapus", + "verifying": "Memverifikasi API Key dan model...", + "verifyingAbort": "Verifikasi dibatalkan, silakan coba lagi nanti", + "apiKeyError": "API Key tidak valid, silakan periksa dan masukkan kembali API Key Anda.", + "closeAllTitle": "Konfirmasi nonaktifkan?", + "closeAllDescription": "Setelah dinonaktifkan, tidak ada model yang tersedia untuk percakapan", + "noModelAlertTitle": "Tidak ada model yang tersedia!", + "noModelAlertDescription": "Semua model yang dipilih tidak didukung, percakapan tidak mungkin", + "selectModelPlaceHolder": "Pilih model...", + "noModelAlertOption": "Tidak ada model yang tersedia", + "popupTitle": "Model yang Tersedia", + "searchPlaceholder": "Cari model...", + "noResult": "Tidak ada model yang tersedia", + "reloadModelList": "Muat Ulang", + "modelSaved": "Model disimpan", + "modelSaveFailed": "Gagal menyimpan model", + "parameterSaved": "Parameter disimpan", + "parameterSaveFailed": "Gagal menyimpan parameter", + "ignored": "Lewati verifikasi untuk model ini", + "unSupportModel": "Model tidak didukung", + "unToolCallsSupport": "Panggilan Alat tidak didukung", + "verify": "Verifikasi", + "verifyIgnore": "Abaikan", + "verifyIgnoreAlt": "Pengingat verifikasi tidak akan ditampilkan lagi", + "verifyNextTime": "Nanti", + "verifyNextTimeAlt": "Akan meminta verifikasi lain kali", + "verifyTitle": "! Terdeteksi {{count}} model yang belum diverifikasi", + "verifyDesc": "Model berikut belum diverifikasi. Apakah Anda ingin memverifikasinya?", + "progressVerifying": "Verifikasi model sedang berlangsung, harap tunggu...", + "verifyMenu": { + "advanced": "Pengaturan Lanjutan", + "verify": "Verifikasi Model", + "ignore": "Abaikan Verifikasi", + "delete": "Hapus Model" + }, + "customModelID": { + "add": "+ ID Model Khusus", + "title": "ID Model Khusus", + "placeholder": "Masukkan ID model khusus...", + "Error": { + "empty": "ID model khusus tidak boleh kosong", + "exist": "ID model khusus sudah ada" + } + }, + "copyContent": "Salin Konten", + "editProviderTitle": "Edit Konfigurasi {{provider}}", + "hide": "Sembunyikan", + "display": "Tampilkan", + "copy": "Salin", + "modelSetting": "Pengaturan Lanjutan", + "streamingModeTooltip": "Mode Streaming adalah ketika model merespons, ia menampilkan konten secara bertahap, alih-alih menampilkan semuanya sekaligus. Menonaktifkan tombol, dalam Mode Non-Streaming, akan menunggu model menghasilkan konten sepenuhnya dan menampilkan semuanya sekaligus, menghindari masalah kompatibilitas dengan panggilan alat dalam model.", + "streamingModeDescription": "Kontrol cara respons model ditampilkan", + "streamingModeAlert": "Pengingat: Beberapa model hanya mendukung pemanggilan alat baik dalam Mode Streaming atau Mode Non-Streaming. Disarankan untuk memahami sepenuhnya kebutuhan Anda sebelum menyesuaikan parameter ini.", + "customInput": "Input Khusus", + "addCustomParameter": "Tambah Parameter Khusus", + "parameterName": "Nama Parameter", + "parameterType": "Tipe Parameter", + "parameterValue": "Nilai Parameter", + "parameterNameDescription": "Masukkan nama, seperti temperature", + "parameterTypeDescription": "Pilih tipe", + "parameterValueDescription": "Silakan pilih tipe parameter terlebih dahulu kemudian masukkan nilai", + "parameterNameDuplicate": "Nama parameter sudah ada", + "parameterTypeInt": "Bilangan Bulat", + "parameterTypeFloat": "Bilangan Desimal", + "parameterTypeString": "String", + "parameterTypeIntDescription": "Rentang yang diizinkan 0-1M", + "parameterTypeFloatDescription": "Rentang yang diizinkan 0.0-1.0", + "parameterTypeStringDescription": "Silakan masukkan string, seperti medium", + "reasoningLevelDescription": "Tetapkan kedalaman pemikiran model", + "reasoningLevelTooltip": "Rendah mewakili respons cepat, berfokus pada kesimpulan dan tanpa detail tambahan, dengan penalaran langsung dan sederhana. Sedang memberikan respons dengan penjelasan logis yang cukup, mencakup informasi kunci. Tinggi menawarkan respons mendalam dengan analisis dan penjelasan yang terstruktur dan rinci.", + "tokenBudgetDescription": "Tetapkan nilai penalaran ({{min}}~{{max}})", + "parameterVerify": "Verifikasi Parameter", + "verifyErrorInfo": "Detail Kesalahan Verifikasi", + "verifyErrorMsg": "Model tidak menggunakan alat apa pun selama verifikasi, yang mungkin karena kurangnya dukungan atau tidak dipicu. Oleh karena itu, tidak mungkin untuk mengonfirmasi apakah ia mendukung alat.", + "verifyStatusSuccess": "Verifikasi model berhasil, diaktifkan dengan konfigurasi asli", + "verifyStatusSuccessInPrompt": "Verifikasi model berhasil, diaktifkan dengan MCP Prompts", + "verifyUnexpectedFailed": "Verifikasi model gagal, terjadi kesalahan yang tidak diketahui, silakan coba lagi nanti", + "oapUsageLimit": "Batas penggunaan tercapai, untuk sementara tidak tersedia" + }, + "system": { + "title": "Pengaturan Sistem", + "language": "Bahasa Sistem", + "languageDefault": "Default Sistem", + "languageDescription": "Bahasa yang digunakan untuk menampilkan antarmuka sistem. Bahasa yang digunakan dalam model dapat diubah di halaman pengaturan model, ini mengacu pada bahasa yang ditampilkan di antarmuka Dive", + "theme": "Mode Gelap", + "themeDescription": "Beralih antara default sistem dan mode gelap", + "defaultInstructions": "speak in Indonesian", + "autoDownload": "Unduh Pembaruan Otomatis", + "autoDownloadDescription": "Unduh versi baru DIVE secara otomatis ketika pengguna restart atau klik tombol \"Upgrade\" di halaman menu, versi baru akan diaktifkan", + "autoLaunch": "Peluncuran Otomatis", + "autoLaunchDescription": "Luncurkan Dive AI secara otomatis saat sistem dimulai", + "minimalToTray": "Minimalkan ke baki", + "minimalToTrayDescription": "Saat menutup jendela, program akan diminimalkan ke baki sistem alih-alih keluar sepenuhnya", + "loginTitle": "Login OAP", + "loginDescription": "Gunakan OpenAgentPlatform untuk login, tidak diperlukan latar belakang teknis untuk dengan mudah menghubungkan LLM, AI Agents, dan MCP Servers — Rasakan solusi cerdas sekarang!", + "personalInformationTitle": "Informasi Pribadi", + "defaultSystemPrompt": "Prompt Sistem Default Dive", + "defaultSystemPromptDescription": "Prompt Sistem Default Dive digunakan sebagai prompt sistem default untuk obrolan. Ini memberitahu LLM bahwa obrolan Dive mendukung KaTeX / Markdown / Mermaid, dll. Fitur ini mengonsumsi token tertentu, yang dapat membuat respons lebih lambat dari prompt tanpa prompt sistem. Di sisi lain, jika dinonaktifkan, kualitas respons LLM mungkin menurun", + "usageAnalytics": "Buka halaman Dashboard di OAP Hub untuk melihat", + "usageAnalyticsTitle": "Analitik Penggunaan", + "userEdit": "Buka halaman Akun di OAP Hub untuk membuat perubahan", + "planSectionTitle": "Penggunaan paket saat ini", + "subscriptionDate": "Tanggal berlangganan", + "remainingUsage": "Penggunaan tersisa", + "usageWarningTitle": "Batas penggunaan token tercapai.", + "usageWarning": "Kuota paket Pro akan direset bulan depan, atau beli paket token untuk lebih banyak penggunaan. Model Dasar dan MCP masih tersedia.", + "BaseSubscriptionDate": "Tidak pernah kedaluwarsa", + "BaseRemainingUsage": "Tanpa batas", + "BaseUsageWarning": "Paket Base mencakup akses ke Model Dasar dan MCP Dasar. Untuk menggunakan model dan MCP lain, silakan tingkatkan paket Anda dari Halaman Paket.", + "customPromptDescription": "Jika Anda memerlukan instruksi khusus tambahan, silakan klik fungsi \"Prompt Khusus\" di bawah ini untuk mengaturnya.", + "customPromptButton": "Prompt Khusus", + "tokenPackageTitle": "Penggunaan paket token", + "tokenPackageHint": "Paket token tidak memiliki tanggal kedaluwarsa dan hanya akan digunakan setelah kuota paket bulanan habis.", + "tokenPackageRemainingUsage": "Penggunaan tersisa", + "tokenPackageWarningTitle": "Kuota token habis.", + "tokenPackageWarning": "Anda dapat mengisi ulang lebih banyak penggunaan token di halaman Dashboard OAPhub.", + "skipTlsVerifyWarning": "Peringatan keamanan: Mengabaikan verifikasi sertifikat dapat mengurangi keamanan koneksi. Disarankan untuk digunakan di lingkungan jaringan tepercaya." + }, + "toast": { + "copiedToClipboard": "Disalin ke clipboard", + "copyFailed": "Salin gagal", + "copiedImage": "Gambar Disalin", + "downloadedImage": "Gambar Diunduh" + }, + "keymap": { + "title": "Pintasan Keyboard", + "events": { + "chat-input_submit": "Kirim Pesan", + "chat-input_upload-file": "Unggah File", + "chat-input_focus": "Fokus Input", + "chat-input_paste-last-message": "Tempel Pesan Terakhir", + "chat-message_copy-last": "Salin Pesan Terakhir", + "chat_delete": "Hapus Obrolan", + "global_new-chat": "Obrolan Baru", + "global_toggle-sidebar": "Alihkan Sidebar", + "global_close-layer": "Tutup Jendela", + "global_toggle-keymap-modal": "Alihkan Bantuan Pintasan Keyboard" + } + }, + "update": { + "downloading": "Mengunduh...", + "readyToInstall": "Siap untuk Dipasang", + "clickToInstall": "Klik untuk Memasang Pembaruan" + }, + "login": { + "subtitle": "Dive AI adalah aplikasi desktop open-source yang mengintegrasikan berbagai model bahasa besar yang mendukung panggilan fungsi dengan mulus. Melalui antarmukanya yang bersih dan intuitif, Anda dapat dengan mudah berbincang dengan AI mutakhir, dari pertanyaan sehari-hari hingga tugas profesional, mendapatkan respons yang tepat dan menjadikannya asisten cerdas Anda.", + "title1": "Gunakan Model yang Anda Persiapkan Sendiri", + "description1": "Cocok untuk ahli AI tingkat lanjut. Jika Anda sudah memiliki konfigurasi sendiri yang siap, baik itu Ollama lokal, llama.cpp, atau API LLM jarak jauh dari Openrouter, OpenAI, Anthropic, atau perusahaan AI lainnya, silakan gunakan opsi ini.", + "button1": "Buka Pengaturan Model", + "title2": "Gunakan OpenAgentPlatform", + "description2": "OAP memudahkan semua orang untuk menggunakan layanan AI paling canggih, menghubungkan LLM, AI Agents, dan MCP Servers tanpa memerlukan keahlian teknis. Jelajahi kemungkinan AI yang tak terbatas dan rasakan solusi cerdas sekarang.", + "button2": "Daftar untuk OAP", + "button3": "Masuk ke OAP" + }, + "InstallHostDependencies": { + "title": "Mengunduh Dependensi Host...", + "retry": "Coba Lagi", + "stop": "Berhenti", + "tip": "Jika terjadi kesalahan selama pengunduhan, tutup jendela ini terlebih dahulu dan mulai ulang aplikasi untuk mengunduh ulang." + }, + "deeplink": { + "mcpInstallConfirm": "Tambah Layanan MCP stdio - Anda akan menambahkan MCP melalui perintah berikut, silakan konfirmasi:" + } +} + diff --git a/src/locales/it/translation.json b/src/locales/it/translation.json new file mode 100644 index 00000000..f59d8c88 --- /dev/null +++ b/src/locales/it/translation.json @@ -0,0 +1,442 @@ +{ + "header": { + "title": "Dive AI", + "openSidebar": "Apri barra laterale", + "closeSidebar": "Chiudi barra laterale" + }, + "chat": { + "placeholder": "Invia un messaggio...", + "newChat": "Nuova chat", + "newChatTooltip": "Inizia una nuova conversazione", + "history": "Cronologia", + "copyCode": "Copia", + "previewCode": "Clicca per visualizzare l'anteprima", + "uploadFile": "Carica file", + "send": "Invia", + "untitledChat": "Chat senza titolo", + "deleteChat": "Elimina chat", + "deleteSuccess": "Chat eliminata", + "deleteFailed": "Eliminazione fallita", + "confirmDelete": "Conferma eliminazione", + "confirmDeleteDescription": "Una volta eliminata, la chat non può essere recuperata.", + "tools": { + "button": "Strumenti", + "enabledHint": "{{enabled}} strumenti abilitati", + "failedHint": "{{enabled}} strumenti abilitati, {{failed}} strumenti falliti" + }, + "abort": "Interrompi generazione", + "retry": "Riprova", + "noModelAlert": "Nessun modello disponibile", + "noModelBanner": "Nessun modello disponibile, seleziona prima un modello", + "onLimit": "Hai raggiunto il limite di utilizzo del piano {{plan}}, i modelli oap non possono essere utilizzati", + "modelSettings": "Impostazioni del modello", + "copy": "Copia", + "copied": "Copiato", + "edit": "Modifica", + "editDescription": "La modifica di questo messaggio genererà una nuova risposta", + "cancel": "Annulla", + "save": "Salva", + "toolCalls": "🛠 Risultato chiamata strumento {{name}}", + "unsupportTools": "{{model}} non supporta le chiamate agli strumenti", + "dragFiles": "Rilascia i file qui per aggiungerli alla chat", + "tools-btn": { + "disableToast": "Chiamate agli strumenti disabilitate", + "disable": "Disabilita chiamate agli strumenti", + "enableToast": "Chiamate agli strumenti abilitate", + "enable": "Abilita chiamate agli strumenti" + } + }, + "welcome": { + "title": "Benvenuto in Dive AI", + "subtitle": "Inizia la tua conversazione con l'AI", + "startChat": "Inizia chat" + }, + "setup": { + "title": "Configurazione iniziale", + "subtitle": "Configura le impostazioni del modello", + "required": "Questo campo è obbligatorio", + "submit": "Salva impostazioni", + "provider": "Provider del modello", + "verify": "Verifica modello", + "verifying": "Verifica in corso...", + "verifySuccess": "Verifica del modello riuscita", + "verifySuccessNoTool": "Verifica del modello riuscita, ma non supporta le chiamate agli strumenti", + "verifyFailed": "Verifica del modello fallita", + "verifyError": "Si è verificato un errore durante la verifica", + "saveSuccess": "Impostazioni salvate con successo", + "saveFailed": "Salvataggio delle impostazioni fallito", + "back": "Indietro", + "parameters": "Parametri", + "topPDescription": "Il parametro Top-P controlla l'intervallo di selezione delle parole. Un valore di 0 utilizza il valore predefinito; valori inferiori selezionano solo parole ad alta probabilità, dando risposte conservative; valori superiori ampliano l'intervallo del vocabolario, portando a risposte più varie.", + "temperatureDescription": "Il parametro temperatura controlla la casualità delle risposte. Un valore di 0 utilizza il valore predefinito; valori inferiori producono risposte più precise e stabili; valori superiori generano risposte più creative ma meno rigorose." + }, + "sidebar": { + "tools": "Gestione strumenti (MCP)", + "settings": "Impostazioni modello", + "update": "Aggiornamento disponibile", + "models": "Impostazioni modello", + "system": "Impostazioni di sistema", + "manageAndSettings": "Gestione e impostazioni", + "OAPhub": "OAPhub", + "signOut": "Esci", + "chat": { + "starredChat": "Preferiti", + "starChat": "Aggiungi ai preferiti", + "unStarChat": "Rimuovi dai preferiti", + "starFailed": "Aggiunta ai preferiti fallita", + "renameChat": "Rinomina", + "renameFailed": "Rinomina fallita", + "deleteChat": "Elimina" + } + }, + "setting": { + "tabs": { + "Tools": "Gestione strumenti MCP", + "Model": "Provider del modello", + "Account": "Account", + "System": "Impostazioni di sistema" + } + }, + "tools": { + "title": "Gestione strumenti (MCP)", + "editConfig": "Modifica configurazione", + "editConfigAlt": "Modifica configurazione server MCP", + "configTitle": "Configurazione server MCP", + "save": "Salva", + "cancel": "Annulla", + "saveSuccess": "Impostazioni salvate con successo", + "saveFailed": "Salvataggio delle impostazioni fallito", + "toggleFailed": "Si è verificato un errore", + "reloadFailed": "{{toolName}} si è verificato un errore, ricaricamento fallito", + "reloadAllFailed": "{{number}} chiamate agli strumenti si è verificato un errore, ricaricamento fallito", + "openConfigFolder": "Cartella di configurazione", + "openConfigFolderAlt": "Apri cartella di configurazione", + "fetchFailed": "Caricamento degli strumenti fallito", + "configFetchFailed": "Caricamento della configurazione fallito", + "configSaveAborted": "Salvataggio della configurazione interrotto", + "invalidJson": "Formato JSON non valido", + "updateFailed": "{{serverName}} caricamento fallito: {{error}}", + "installFailed": "Installazione fallita", + "startFailed": "Avvio fallito", + "toolMenu": { + "delete": "Elimina", + "edit": "Modifica", + "reload": "Ricarica", + "detail": "Visualizza dettagli" + }, + "delete": "Elimina", + "jsonCopy": "Copia", + "jsonCopied": "Copiato", + "jsonDownload": "Scarica", + "deleteTitle": "Conferma eliminazione dello strumento {{mcp}}?", + "deleteAllTitle": "Conferma eliminazione di tutti gli strumenti?", + "fieldTitle": "Campo", + "fieldTitleAlt": "I campi di solito soddisfano la maggior parte delle esigenze, ma se le tue impostazioni MCP richiedono campi aggiuntivi o tipi diversi, puoi modificare direttamente nell'area di testo JSON a destra per soddisfare i requisiti del tuo programma", + "initialTimeoutAlt": "Il tempo di attesa della connessione iniziale è impostato su 10 secondi per impostazione predefinita, ma può essere impostato su qualsiasi numero decimale di 10 secondi o più. Non c'è limite al numero di secondi. Si consiglia di regolare questo valore se il server ha una connessione lenta.", + "initialTimeoutPlaceholder": "Inserisci Timeout iniziale...", + "initialTimeoutError": "Inserisci un numero maggiore o uguale a 10", + "jsonDesc": "Inserisci o incolla JSON del server MCP nel campo", + "addArg": "Aggiungi argomento", + "addEnv": "Aggiungi variabile d'ambiente", + "jsonFormatError": { + "addFormat": "Errore di formato della configurazione, controlla e correggi il formato", + "format": "Errore di formato della configurazione {{mcp}}, controlla e correggi il formato", + "nameEmpty": "Il nome non può essere vuoto, inserisci un nome valido", + "nameExist": "Una configurazione con il nome \"{{mcp}}\" esiste già", + "stringError": "Strumento {{mcp}}: Il campo {{field}} deve essere una stringa", + "numberError": "Strumento {{mcp}}: Il campo {{field}} deve essere un numero", + "floatError": "Strumento {{mcp}}: Il campo {{field}} deve essere un decimale", + "booleanError": "Strumento {{mcp}}: Il campo {{field}} deve essere impostato su true o false", + "arrayError": "Strumento {{mcp}}: Il campo {{field}} deve essere fornito come array", + "objectError": "Strumento {{mcp}}: Il campo {{field}} deve essere fornito come oggetto", + "optionError": "Strumento {{mcp}}: Il campo {{field}} può essere solo {{options}}", + "requiredError": "Strumento {{mcp}}: Il campo {{field}} è obbligatorio", + "jsonError": "Strumento {{mcp}}: Errore di formato JSON, controlla e correggi il formato", + "toolNumberError": "In modalità di modifica può essere impostato un solo strumento, rimuovi altri elementi non strumento", + "enabled": "Strumento {{mcp}}: Il campo enabled deve essere impostato su true o false", + "command": "Strumento {{mcp}}: Il campo command deve essere una stringa", + "args": "Strumento {{mcp}}: Il campo args deve essere fornito come array", + "env": "Strumento {{mcp}}: Il campo env deve essere fornito come oggetto", + "url": "Strumento {{mcp}}: Il campo url deve essere una stringa", + "transport": "Strumento {{mcp}}: Il campo transport può essere solo {{options}}", + "initialTimeout": "Strumento {{mcp}}: Il campo initialTimeout deve essere un decimale", + "range": "Strumento {{mcp}}: Il valore del campo {{field}} è fuori intervallo, controlla e correggi il valore", + "minRange": "Strumento {{mcp}}: Il campo {{field}} deve essere maggiore o uguale a {{value}}", + "maxRange": "Strumento {{mcp}}: Il campo {{field}} deve essere minore o uguale a {{value}}" + }, + "namePlaceholder": "Inserisci nome...", + "commandPlaceholder": "Inserisci comando...", + "argsPlaceholder": "Inserisci argomenti...", + "envKey": "Inserisci nome variabile (Chiave)...", + "envValue": "Inserisci valore variabile (Valore)...", + "inputKeyError": "Nome variabile {{ name }} duplicato", + "urlPlaceholder": "Inserisci URL...", + "transportPlaceholder": "Seleziona trasporto...", + "providerSearchPlaceholder": "Inserisci ricerca Provider...", + "noProviderSearchResult": "Nessun provider correlato trovato", + "toogleToolAlt": "Abilita strumenti MCP", + "logTitle": "Esegui comando UVX", + "logProcessing": "Elaborazione...", + "no_tool_title": "Nessun server MCP disponibile", + "no_oap_tool_message": { + "all": "Seleziona un server MCP OAP da utilizzare o aggiungi un server MCP personalizzato.", + "oap": "Seleziona un server MCP OAP da utilizzare.", + "custom": "Aggiungi un server MCP personalizzato." + }, + "no_tool_message": "Aggiungi un server MCP.", + "tab": { + "all": "Tutti gli strumenti", + "oap": "Strumenti OAP", + "custom": "Strumenti personalizzati" + }, + "oapStoreLinkAlt": "Visualizza dettagli", + "subToolsCount": "Strumenti abilitati: {{count}} / {{total}}", + "disabledDescription": "Disabilitato", + "unsaved": { + "title": "Modifiche non salvate", + "desc": "Hai modifiche non salvate. Se lasci questa pagina, le modifiche andranno perse. Vuoi continuare?", + "cancel": "Annulla modifiche", + "save": "Salva" + }, + "oauthAlert": "Conferma di fidarti di questo connettore: questo connettore non è stato verificato da Dive. Sei responsabile di tutte le operazioni eseguite con Dive.", + "reload": { + "headerBtn": "Ricarica", + "headerBtnAlt": "Ricarica e aggiorna strumenti MCP" + }, + "oap": { + "type": { + "all": "Tutti gli strumenti", + "base": "Mostra solo Base", + "pro": "Mostra solo Pro" + }, + "sort": { + "title": "Ordina", + "popular": "Popolare", + "new": "Nuovo" + }, + "tag": "Tag", + "no_search_data_title": "Nessuno strumento MCP trovato", + "no_search_data": "Nessun risultato di ricerca trovato, cancella la parola chiave di ricerca o regola le condizioni di filtro.", + "clear_filter": "Cancella filtro", + "hint": "I server MCP di alto livello richiedono l'aggiornamento alla versione Pro per l'installazione", + "high_cost_title": "Abilita server MCP ad alto costo", + "high_cost_desc": "Hai selezionato server MCP che consumano molti token. Verifica se l'utilizzo del tuo piano è sufficiente.", + "headerBtnAlt": "Aggiungi / Visualizza strumenti MCP OAP" + }, + "custom": { + "headerBtn": "Aggiungi / Modifica configurazione", + "headerBtnAlt": "Aggiungi / Modifica strumenti personalizzati", + "listAdd": "Aggiungi server MCP", + "titleAdd": "Aggiungi server MCP", + "titleEdit": "Modifica {{tool}} MCP", + "titleEditJson": "Impostazioni strumenti MCP" + } + }, + "modelConfig": { + "title": "Impostazioni modello", + "customInstructions": "Prompt personalizzato", + "customInstructionsPlaceholder": "Inserisci prompt di sistema personalizzato...", + "customInstructionsDescription": "Questi prompt verranno aggiunti alla fine del prompt di sistema di ogni richiesta", + "saveInstructions": "Salva istruzioni", + "customRulesSaved": "Istruzioni personalizzate salvate", + "customRulesFailed": "Salvataggio delle istruzioni personalizzate fallito", + "modelDescription": "Nome del modello da utilizzare", + "modelDescriptionHint": "Nome del modello da utilizzare (Inserisci prima la chiave API per vedere i modelli disponibili)" + }, + "common": { + "close": "Chiudi", + "confirm": "Conferma", + "cancel": "Annulla", + "copy": "Copia", + "copySuccess": "Copiato", + "zoomInImage": "Ingrandisci immagine", + "copyImage": "Copia immagine", + "copyImageUrl": "Copia URL immagine", + "downloadImage": "Scarica immagine", + "login": "Accedi", + "signup": "Registrati", + "save": "Salva", + "signout": "Esci" + }, + "models": { + "title": "Impostazioni modello", + "newProvider": "+ Aggiungi provider", + "parameters": "Impostazioni parametri", + "instructionsSetting": "Impostazioni istruzioni", + "listTitle": "Configura provider del modello", + "optional": "(Facoltativo)", + "selfOptional": "(Facoltativo)", + "unSupportModelCount": "Hai selezionato {{count}} modelli non supportati", + "deleteTitle": "Conferma eliminazione della chiave {{name}}?", + "deleteDescription": "Questa azione non può essere annullata.", + "deleteAllTitle": "Conferma eliminazione modello?", + "deleteAllDescription": "Dopo l'eliminazione, nessun modello sarà disponibile per la conversazione", + "deleteToast": "Chiave {{name}} eliminata", + "deleteFailed": "Eliminazione dell'autenticazione del provider fallita", + "providerMenu1": "Modifica provider", + "providerMenu2": "Gestisci modello", + "providerMenu3": "Elimina", + "verifying": "Verifica chiave API e modello...", + "verifyingAbort": "Verifica interrotta, riprova più tardi", + "apiKeyError": "Chiave API non valida, controlla e reinserisci la tua chiave API.", + "closeAllTitle": "Conferma disattivazione?", + "closeAllDescription": "Dopo la disattivazione, nessun modello sarà disponibile per la conversazione", + "noModelAlertTitle": "Nessun modello disponibile!", + "noModelAlertDescription": "Tutti i modelli selezionati non sono supportati, la conversazione non è possibile", + "selectModelPlaceHolder": "Seleziona modello...", + "noModelAlertOption": "Nessun modello disponibile", + "popupTitle": "Modelli disponibili", + "searchPlaceholder": "Cerca modelli...", + "noResult": "Nessun modello disponibile", + "reloadModelList": "Ricarica", + "modelSaved": "Modelli salvati", + "modelSaveFailed": "Salvataggio dei modelli fallito", + "parameterSaved": "Parametri salvati", + "parameterSaveFailed": "Salvataggio dei parametri fallito", + "ignored": "Salta verifica per questo modello", + "unSupportModel": "Modello non supportato", + "unToolCallsSupport": "Chiamate agli strumenti non supportate", + "verify": "Verifica", + "verifyIgnore": "Ignora", + "verifyIgnoreAlt": "Il promemoria di verifica non verrà più visualizzato", + "verifyNextTime": "Più tardi", + "verifyNextTimeAlt": "Chiederà la verifica la prossima volta", + "verifyTitle": "! Rilevati {{count}} modelli non verificati", + "verifyDesc": "I seguenti modelli non sono verificati. Vuoi verificarli?", + "progressVerifying": "Verifica del modello in corso, attendere...", + "verifyMenu": { + "advanced": "Impostazioni avanzate", + "verify": "Verifica modello", + "ignore": "Ignora verifica", + "delete": "Elimina modello" + }, + "customModelID": { + "add": "+ ID modello personalizzato", + "title": "ID modello personalizzato", + "placeholder": "Inserisci ID modello personalizzato...", + "Error": { + "empty": "L'ID modello personalizzato non può essere vuoto", + "exist": "L'ID modello personalizzato esiste già" + } + }, + "copyContent": "Copia contenuto", + "editProviderTitle": "Modifica configurazione {{provider}}", + "hide": "Nascondi", + "display": "Visualizza", + "copy": "Copia", + "modelSetting": "Impostazioni avanzate", + "streamingModeTooltip": "La modalità streaming è quando il modello risponde, mostra il contenuto gradualmente, invece di mostrarlo tutto in una volta. Disattivando il pulsante, in modalità non streaming, il modello genererà completamente il contenuto e lo visualizzerà tutto in una volta, evitando problemi di compatibilità con le chiamate agli strumenti nel modello.", + "streamingModeDescription": "Controlla come vengono visualizzate le risposte del modello", + "streamingModeAlert": "Promemoria: Alcuni modelli supportano le chiamate agli strumenti solo in modalità streaming o non streaming. Si consiglia di comprendere appieno le proprie esigenze prima di regolare questo parametro.", + "customInput": "Input personalizzato", + "addCustomParameter": "Aggiungi parametro personalizzato", + "parameterName": "Nome parametro", + "parameterType": "Tipo parametro", + "parameterValue": "Valore parametro", + "parameterNameDescription": "Inserisci nome, come temperatura", + "parameterTypeDescription": "Seleziona tipo", + "parameterValueDescription": "Seleziona prima il tipo di parametro e poi inserisci il valore", + "parameterNameDuplicate": "Il nome del parametro esiste già", + "parameterTypeInt": "Intero", + "parameterTypeFloat": "Decimale", + "parameterTypeString": "Stringa", + "parameterTypeIntDescription": "Intervallo consentito 0-1M", + "parameterTypeFloatDescription": "Intervallo consentito 0.0-1.0", + "parameterTypeStringDescription": "Inserisci una stringa, come medium", + "reasoningLevelDescription": "Imposta la profondità di pensiero del modello", + "reasoningLevelTooltip": "Basso rappresenta una risposta rapida, concentrandosi sulle conclusioni e senza dettagli aggiuntivi, con un ragionamento diretto e semplice. Medio fornisce una risposta con una spiegazione logica sufficiente, coprendo le informazioni chiave. Alto offre una risposta approfondita con analisi e spiegazione strutturata e dettagliata.", + "tokenBudgetDescription": "Imposta valore di ragionamento ({{min}}~{{max}})", + "parameterVerify": "Verifica parametri", + "verifyErrorInfo": "Dettagli errore di verifica", + "verifyErrorMsg": "Il modello non ha utilizzato alcuno strumento durante la verifica, il che potrebbe essere dovuto alla mancanza di supporto o al mancato attivazione. Pertanto, non è possibile confermare se supporta gli strumenti.", + "verifyStatusSuccess": "Verifica del modello riuscita, abilitato con configurazione originale", + "verifyStatusSuccessInPrompt": "Verifica del modello riuscita, abilitato con MCP Prompts", + "verifyUnexpectedFailed": "Verifica del modello fallita, si è verificato un errore sconosciuto, riprova più tardi", + "oapUsageLimit": "Limite di utilizzo raggiunto, temporaneamente non disponibile" + }, + "system": { + "title": "Impostazioni di sistema", + "language": "Lingua del sistema", + "languageDefault": "Predefinita del sistema", + "languageDescription": "Lingua utilizzata per visualizzare l'interfaccia di sistema. La lingua utilizzata nel modello può essere modificata nella pagina delle impostazioni del modello, questo si riferisce alla lingua visualizzata nell'interfaccia Dive", + "theme": "Modalità scura", + "themeDescription": "Passa tra predefinita del sistema e modalità scura", + "defaultInstructions": "speak in Italian", + "autoDownload": "Download automatico aggiornamento", + "autoDownloadDescription": "Scarica automaticamente la nuova versione di DIVE quando l'utente riavvia o fa clic sul pulsante \"Aggiorna\" nella pagina del menu, la nuova versione verrà attivata", + "autoLaunch": "Avvio automatico", + "autoLaunchDescription": "Avvia automaticamente Dive AI all'avvio del sistema", + "minimalToTray": "Riduci a icona nell'area di notifica", + "minimalToTrayDescription": "Quando si chiude la finestra, il programma verrà minimizzato nell'area di notifica del sistema invece di uscire completamente", + "loginTitle": "Accesso OAP", + "loginDescription": "Usa OpenAgentPlatform per accedere, non è richiesto alcun background tecnico per collegare facilmente LLM, agenti AI e server MCP — Prova le soluzioni intelligenti ora!", + "personalInformationTitle": "Informazioni personali", + "defaultSystemPrompt": "Prompt di sistema predefinito di Dive", + "defaultSystemPromptDescription": "Il prompt di sistema predefinito di Dive viene utilizzato come prompt di sistema predefinito per la chat. Informa l'LLM che la chat Dive supporta KaTeX / Markdown / Mermaid ecc. Questa funzionalità consuma alcuni token, il che potrebbe rendere la risposta più lenta rispetto al prompt senza prompt di sistema. D'altra parte, se è disabilitato, la qualità della risposta dell'LLM potrebbe diminuire", + "usageAnalytics": "Vai alla pagina Dashboard in OAP Hub per visualizzare", + "usageAnalyticsTitle": "Analisi dell'utilizzo", + "userEdit": "Vai alla pagina Account in OAP Hub per apportare modifiche", + "planSectionTitle": "Utilizzo del piano corrente", + "subscriptionDate": "Data di sottoscrizione", + "remainingUsage": "Utilizzo rimanente", + "usageWarningTitle": "Limite di utilizzo token raggiunto.", + "usageWarning": "La quota del piano Pro si reimposta il mese prossimo, oppure acquista pacchetti token per più utilizzo. I modelli base e MCP sono ancora disponibili.", + "BaseSubscriptionDate": "Non scade mai", + "BaseRemainingUsage": "Nessun limite", + "BaseUsageWarning": "Il piano Base include l'accesso ai modelli base e agli MCP di base. Per utilizzare altri modelli e MCP, aggiorna il tuo piano dalla pagina Piano.", + "customPromptDescription": "Se hai bisogno di istruzioni personalizzate aggiuntive, fai clic sulla funzione \"Prompt personalizzato\" qui sotto per configurarla.", + "customPromptButton": "Prompt personalizzato", + "tokenPackageTitle": "Utilizzo pacchetto token", + "tokenPackageHint": "I pacchetti token non hanno data di scadenza e verranno utilizzati solo dopo l'esaurimento della quota mensile del piano.", + "tokenPackageRemainingUsage": "Utilizzo rimanente", + "tokenPackageWarningTitle": "Quota token esaurita.", + "tokenPackageWarning": "Puoi ricaricare più utilizzo token alla pagina Dashboard di OAPhub.", + "skipTlsVerifyWarning": "Avviso di sicurezza: Ignorare la verifica del certificato può ridurre la sicurezza della connessione. Si consiglia di utilizzare in ambienti di rete affidabili." + }, + "toast": { + "copiedToClipboard": "Copiato negli appunti", + "copyFailed": "Copia fallita", + "copiedImage": "Immagine copiata", + "downloadedImage": "Immagine scaricata" + }, + "keymap": { + "title": "Scorciatoie da tastiera", + "events": { + "chat-input_submit": "Invia messaggio", + "chat-input_upload-file": "Carica file", + "chat-input_focus": "Metti a fuoco input", + "chat-input_paste-last-message": "Incolla ultimo messaggio", + "chat-message_copy-last": "Copia ultimo messaggio", + "chat_delete": "Elimina chat", + "global_new-chat": "Nuova chat", + "global_toggle-sidebar": "Attiva/disattiva barra laterale", + "global_close-layer": "Chiudi finestra", + "global_toggle-keymap-modal": "Attiva/disattiva guida scorciatoie da tastiera" + } + }, + "update": { + "downloading": "Download in corso...", + "readyToInstall": "Pronto per l'installazione", + "clickToInstall": "Fai clic per installare l'aggiornamento" + }, + "login": { + "subtitle": "Dive AI è un'applicazione desktop open-source che integra perfettamente vari grandi modelli linguistici che supportano le chiamate di funzione. Attraverso la sua interfaccia pulita e intuitiva, puoi facilmente conversare con l'AI all'avanguardia, dalle domande quotidiane ai compiti professionali, ottenendo risposte precise e rendendola il tuo assistente intelligente.", + "title1": "Usa i tuoi modelli preparati", + "description1": "Adatto per esperti di AI avanzati. Se hai già la tua configurazione pronta, che si tratti di Ollama locale, llama.cpp o API LLM remote da Openrouter, OpenAI, Anthropic o altre aziende di AI, utilizza questa opzione.", + "button1": "Vai alle impostazioni del modello", + "title2": "Usa OpenAgentPlatform", + "description2": "OAP rende facile per tutti utilizzare i servizi AI più avanzati, collegando LLM, agenti AI e server MCP senza richiedere competenze tecniche. Esplora le possibilità illimitate dell'AI e prova le soluzioni intelligenti ora.", + "button2": "Registrati per OAP", + "button3": "Accedi a OAP" + }, + "InstallHostDependencies": { + "title": "Download dipendenze host...", + "retry": "Riprova", + "stop": "Ferma", + "tip": "Se si verifica un errore durante il download, chiudi prima questa finestra e riavvia l'applicazione per scaricare nuovamente." + }, + "deeplink": { + "mcpInstallConfirm": "Aggiungi servizio MCP stdio - Aggiungerai MCP tramite il seguente comando, conferma:" + } +} + diff --git a/src/locales/lo/translation.json b/src/locales/lo/translation.json new file mode 100644 index 00000000..592fecd5 --- /dev/null +++ b/src/locales/lo/translation.json @@ -0,0 +1,442 @@ +{ + "header": { + "title": "Dive AI", + "openSidebar": "ເປີດແຖບດ້ານຂ້າງ", + "closeSidebar": "ປິດແຖບດ້ານຂ້າງ" + }, + "chat": { + "placeholder": "ສົ່ງຂໍ້ຄວາມ...", + "newChat": "ການສົນທະນາໃໝ່", + "newChatTooltip": "ເລີ່ມການສົນທະນາໃໝ່", + "history": "ປະຫວັດ", + "copyCode": "ສຳເນົາ", + "previewCode": "ຄລິກເພື່ອເບິ່ງຕົວຢ່າງ", + "uploadFile": "ອັບໂຫລດໄຟລ໌", + "send": "ສົ່ງ", + "untitledChat": "ການສົນທະນາທີ່ບໍ່ມີຊື່", + "deleteChat": "ລຶບການສົນທະນາ", + "deleteSuccess": "ລຶບການສົນທະນາແລ້ວ", + "deleteFailed": "ການລຶບລົ້ມເຫລວ", + "confirmDelete": "ຢືນຢັນການລຶບ", + "confirmDeleteDescription": "ເມື່ອລຶບແລ້ວ ການສົນທະນາບໍ່ສາມາດກູ້ຄືນໄດ້", + "tools": { + "button": "ເຄື່ອງມື", + "enabledHint": "ເປີດໃຊ້ງານເຄື່ອງມື {{enabled}} ລາຍການ", + "failedHint": "ເປີດໃຊ້ງານເຄື່ອງມື {{enabled}} ລາຍການ, ເຄື່ອງມື {{failed}} ລາຍການລົ້ມເຫລວ" + }, + "abort": "ຢຸດການສ້າງ", + "retry": "ລອງໃໝ່", + "noModelAlert": "ບໍ່ມີໂມເດລທີ່ໃຊ້ໄດ້", + "noModelBanner": "ບໍ່ມີໂມເດລທີ່ໃຊ້ໄດ້, ກະລຸນາເລືອກໂມເດລກ່ອນ", + "onLimit": "ທ່ານໄດ້ເຖິງຂໍ້ຈຳກັດການໃຊ້ແຜນ {{plan}} ແລ້ວ, ບໍ່ສາມາດໃຊ້ໂມເດລ oap ໄດ້", + "modelSettings": "ການຕັ້ງຄ່າໂມເດລ", + "copy": "ສຳເນົາ", + "copied": "ສຳເນົາແລ້ວ", + "edit": "ແກ້ໄຂ", + "editDescription": "ການແກ້ໄຂຂໍ້ຄວາມນີ້ຈະສ້າງຄຳຕອບໃໝ່", + "cancel": "ຍົກເລີກ", + "save": "ບັນທຶກ", + "toolCalls": "🛠 ຜົນການເອີ້ນໃຊ້ເຄື່ອງມື {{name}}", + "unsupportTools": "{{model}} ບໍ່ຮອງຮັບການເອີ້ນໃຊ້ເຄື່ອງມື", + "dragFiles": "ວາງໄຟລ໌ທີ່ນີ້ເພື່ອເພີ່ມໃສ່ການສົນທະນາ", + "tools-btn": { + "disableToast": "ປິດການເອີ້ນໃຊ້ເຄື່ອງມືແລ້ວ", + "disable": "ປິດການເອີ້ນໃຊ້ເຄື່ອງມື", + "enableToast": "ເປີດການເອີ້ນໃຊ້ເຄື່ອງມືແລ້ວ", + "enable": "ເປີດການເອີ້ນໃຊ້ເຄື່ອງມື" + } + }, + "welcome": { + "title": "ຍິນດີຕ້ອນຮັບສູ່ Dive AI", + "subtitle": "ເລີ່ມການສົນທະນາ AI ຂອງທ່ານ", + "startChat": "ເລີ່ມສົນທະນາ" + }, + "setup": { + "title": "ການຕັ້ງຄ່າເບື້ອງຕົ້ນ", + "subtitle": "ກະລຸນາກຳນົດຄ່າການຕັ້ງຄ່າໂມເດລ", + "required": "ຊ່ອງນີ້ຈຳເປັນ", + "submit": "ບັນທຶກການຕັ້ງຄ່າ", + "provider": "ຜູ້ໃຫ້ບໍລິການໂມເດລ", + "verify": "ຢັ້ງຢືນໂມເດລ", + "verifying": "ກຳລັງຢັ້ງຢືນ...", + "verifySuccess": "ການຢັ້ງຢືນໂມເດລສຳເລັດ", + "verifySuccessNoTool": "ການຢັ້ງຢືນໂມເດລສຳເລັດ, ແຕ່ບໍ່ຮອງຮັບການເອີ້ນໃຊ້ເຄື່ອງມື", + "verifyFailed": "ການຢັ້ງຢືນໂມເດລລົ້ມເຫລວ", + "verifyError": "ເກີດຄວາມຜິດພາດໃນລະຫວ່າງການຢັ້ງຢືນ", + "saveSuccess": "ບັນທຶກການຕັ້ງຄ່າສຳເລັດ", + "saveFailed": "ການບັນທຶກການຕັ້ງຄ່າລົ້ມເຫລວ", + "back": "ກັບຄືນ", + "parameters": "ພາລາມິເຕີ", + "topPDescription": "ພາລາມິເຕີ Top-P ຄວບຄຸມຊ່ວງການເລືອກຄຳ. ຄ່າ 0 ໃຊ້ຄ່າເລີ່ມຕົ້ນ; ຄ່າທີ່ຕ່ຳກວ່າຈະເລືອກແຕ່ຄຳທີ່ມີຄວາມເປັນໄປໄດ້ສູງ, ເຮັດໃຫ້ໄດ້ຄຳຕອບທີ່ລະມັດລະວັງ; ຄ່າທີ່ສູງກວ່າຂະຫຍາຍຊ່ວງຄຳສັບ, ເຮັດໃຫ້ໄດ້ຄຳຕອບທີ່ຫລາກຫລາຍກວ່າ.", + "temperatureDescription": "ພາລາມິເຕີອຸນຫະພູມຄວບຄຸມຄວາມສຸ່ມຂອງຄຳຕອບ. ຄ່າ 0 ໃຊ້ຄ່າເລີ່ມຕົ້ນ; ຄ່າທີ່ຕ່ຳກວ່າຜະລິດຄຳຕອບທີ່ແມ່ນຍຳແລະຫມັ້ນຄົງກວ່າ; ຄ່າທີ່ສູງກວ່າສ້າງຄຳຕອບທີ່ສ້າງສັນກວ່າແຕ່ເຂັ້ມງວດໜ້ອຍກວ່າ." + }, + "sidebar": { + "tools": "ການຈັດການເຄື່ອງມື (MCP)", + "settings": "ການຕັ້ງຄ່າໂມເດລ", + "update": "ມີການອັບເດດ", + "models": "ການຕັ້ງຄ່າໂມເດລ", + "system": "ການຕັ້ງຄ່າລະບົບ", + "manageAndSettings": "ການຈັດການແລະການຕັ້ງຄ່າ", + "OAPhub": "OAPhub", + "signOut": "ອອກຈາກລະບົບ", + "chat": { + "starredChat": "ລາຍການທີ່ມັກ", + "starChat": "ເພີ່ມໃສ່ລາຍການທີ່ມັກ", + "unStarChat": "ລຶບອອກຈາກລາຍການທີ່ມັກ", + "starFailed": "ການເພີ່ມໃສ່ລາຍການທີ່ມັກລົ້ມເຫລວ", + "renameChat": "ປ່ຽນຊື່", + "renameFailed": "ການປ່ຽນຊື່ລົ້ມເຫລວ", + "deleteChat": "ລຶບ" + } + }, + "setting": { + "tabs": { + "Tools": "ການຈັດການເຄື່ອງມື MCP", + "Model": "ຜູ້ໃຫ້ບໍລິການໂມເດລ", + "Account": "ບັນຊີ", + "System": "ການຕັ້ງຄ່າລະບົບ" + } + }, + "tools": { + "title": "ການຈັດການເຄື່ອງມື (MCP)", + "editConfig": "ແກ້ໄຂການກຳນົດຄ່າ", + "editConfigAlt": "ແກ້ໄຂການກຳນົດຄ່າເຊີບເວີ MCP", + "configTitle": "ການກຳນົດຄ່າເຊີບເວີ MCP", + "save": "ບັນທຶກ", + "cancel": "ຍົກເລີກ", + "saveSuccess": "ບັນທຶກການຕັ້ງຄ່າສຳເລັດ", + "saveFailed": "ການບັນທຶກການຕັ້ງຄ່າລົ້ມເຫລວ", + "toggleFailed": "ເກີດຄວາມຜິດພາດ", + "reloadFailed": "{{toolName}} ເກີດຄວາມຜິດພາດ, ການໂຫລດໃໝ່ລົ້ມເຫລວ", + "reloadAllFailed": "ການເອີ້ນໃຊ້ເຄື່ອງມື {{number}} ຄັ້ງເກີດຄວາມຜິດພາດ, ການໂຫລດໃໝ່ລົ້ມເຫລວ", + "openConfigFolder": "ໂຟນເດີການກຳນົດຄ່າ", + "openConfigFolderAlt": "ເປີດໂຟນເດີການກຳນົດຄ່າ", + "fetchFailed": "ການໂຫລດເຄື່ອງມືລົ້ມເຫລວ", + "configFetchFailed": "ການໂຫລດການກຳນົດຄ່າລົ້ມເຫລວ", + "configSaveAborted": "ການບັນທຶກການກຳນົດຄ່າຖືກຍົກເລີກ", + "invalidJson": "ຮູບແບບ JSON ບໍ່ຖືກຕ້ອງ", + "updateFailed": "{{serverName}} ການໂຫລດລົ້ມເຫລວ: {{error}}", + "installFailed": "ການຕິດຕັ້ງລົ້ມເຫລວ", + "startFailed": "ການເລີ່ມຕົ້ນລົ້ມເຫລວ", + "toolMenu": { + "delete": "ລຶບ", + "edit": "ແກ້ໄຂ", + "reload": "ໂຫລດໃໝ່", + "detail": "ເບິ່ງລາຍລະອຽດ" + }, + "delete": "ລຶບ", + "jsonCopy": "ສຳເນົາ", + "jsonCopied": "ສຳເນົາແລ້ວ", + "jsonDownload": "ດາວໂຫລດ", + "deleteTitle": "ຢືນຢັນການລຶບເຄື່ອງມື {{mcp}}?", + "deleteAllTitle": "ຢືນຢັນການລຶບເຄື່ອງມືທັງໝົດ?", + "fieldTitle": "ຊ່ອງ", + "fieldTitleAlt": "ຊ່ອງມັກຈະຕອບສະໜອງຄວາມຕ້ອງການສ່ວນໃຫຍ່, ແຕ່ຖ້າການຕັ້ງຄ່າ MCP ຂອງທ່ານຕ້ອງການຊ່ອງເພີ່ມເຕີມຫຼືປະເພດທີ່ແຕກຕ່າງກັນ, ທ່ານສາມາດແກ້ໄຂໂດຍກົງໃນພື້ນທີ່ຂໍ້ຄວາມ JSON ຢູ່ດ້ານຂວາເພື່ອຕອບສະໜອງຄວາມຕ້ອງການຂອງໂປແກຣມຂອງທ່ານ", + "initialTimeoutAlt": "ເວລາລໍຖ້າການເຊື່ອມຕໍ່ເບື້ອງຕົ້ນຖືກກຳນົດເປັນ 10 ວິນາທີຕາມຄ່າເລີ່ມຕົ້ນ, ແຕ່ສາມາດກຳນົດເປັນໂຕເລກທົດນິຍົມໃດໆທີ່ 10 ວິນາທີຫຼືຫຼາຍກວ່າ. ບໍ່ມີຂໍ້ຈຳກັດຈຳນວນວິນາທີ. ແນະນຳໃຫ້ປັບຄ່ານີ້ຖ້າເຊີບເວີມີການເຊື່ອມຕໍ່ຊ້າ.", + "initialTimeoutPlaceholder": "ໃສ່ເວລາໝົດເວລາເບື້ອງຕົ້ນ...", + "initialTimeoutError": "ກະລຸນາໃສ່ໂຕເລກທີ່ໃຫຍ່ກວ່າຫຼືເທົ່າກັບ 10", + "jsonDesc": "ກະລຸນາໃສ່ຫຼືວາງ JSON ເຊີບເວີ MCP ໃສ່ຊ່ອງ", + "addArg": "ເພີ່ມອາກູເມັ້ນ", + "addEnv": "ເພີ່ມຕົວແປສະພາບແວດລ້ອມ", + "jsonFormatError": { + "addFormat": "ຄວາມຜິດພາດຮູບແບບການກຳນົດຄ່າ, ກະລຸນາກວດສອບແລະແກ້ໄຂຮູບແບບ", + "format": "ຄວາມຜິດພາດຮູບແບບການກຳນົດຄ່າ {{mcp}}, ກະລຸນາກວດສອບແລະແກ້ໄຂຮູບແບບ", + "nameEmpty": "ຊື່ຕ້ອງບໍ່ວ່າງເປົ່າ, ກະລຸນາໃສ່ຊື່ທີ່ຖືກຕ້ອງ", + "nameExist": "ການກຳນົດຄ່າທີ່ມີຊື່ \"{{mcp}}\" ມີຢູ່ແລ້ວ", + "stringError": "ເຄື່ອງມື {{mcp}}: ຊ່ອງ {{field}} ຕ້ອງເປັນສະຕຣິງ", + "numberError": "ເຄື່ອງມື {{mcp}}: ຊ່ອງ {{field}} ຕ້ອງເປັນໂຕເລກ", + "floatError": "ເຄື່ອງມື {{mcp}}: ຊ່ອງ {{field}} ຕ້ອງເປັນເລກທົດນິຍົມ", + "booleanError": "ເຄື່ອງມື {{mcp}}: ຊ່ອງ {{field}} ຕ້ອງຖືກກຳນົດເປັນ true ຫຼື false", + "arrayError": "ເຄື່ອງມື {{mcp}}: ຊ່ອງ {{field}} ຕ້ອງຖືກສະໜອງເປັນອາເຣ", + "objectError": "ເຄື່ອງມື {{mcp}}: ຊ່ອງ {{field}} ຕ້ອງຖືກສະໜອງເປັນອອບເຈັກ", + "optionError": "ເຄື່ອງມື {{mcp}}: ຊ່ອງ {{field}} ສາມາດເປັນພຽງ {{options}}", + "requiredError": "ເຄື່ອງມື {{mcp}}: ຊ່ອງ {{field}} ຈຳເປັນ", + "jsonError": "ເຄື່ອງມື {{mcp}}: ຄວາມຜິດພາດຮູບແບບ JSON, ກະລຸນາກວດສອບແລະແກ້ໄຂຮູບແບບ", + "toolNumberError": "ສາມາດກຳນົດເຄື່ອງມືພຽງໜຶ່ງລາຍການໃນໂໝດແກ້ໄຂ, ກະລຸນາລຶບລາຍການທີ່ບໍ່ແມ່ນເຄື່ອງມືອື່ນໆ", + "enabled": "ເຄື່ອງມື {{mcp}}: ຊ່ອງ enabled ຕ້ອງຖືກກຳນົດເປັນ true ຫຼື false", + "command": "ເຄື່ອງມື {{mcp}}: ຊ່ອງ command ຕ້ອງເປັນສະຕຣິງ", + "args": "ເຄື່ອງມື {{mcp}}: ຊ່ອງ args ຕ້ອງຖືກສະໜອງເປັນອາເຣ", + "env": "ເຄື່ອງມື {{mcp}}: ຊ່ອງ env ຕ້ອງຖືກສະໜອງເປັນອອບເຈັກ", + "url": "ເຄື່ອງມື {{mcp}}: ຊ່ອງ url ຕ້ອງເປັນສະຕຣິງ", + "transport": "ເຄື່ອງມື {{mcp}}: ຊ່ອງ transport ສາມາດເປັນພຽງ {{options}}", + "initialTimeout": "ເຄື່ອງມື {{mcp}}: ຊ່ອງ initialTimeout ຕ້ອງເປັນເລກທົດນິຍົມ", + "range": "ເຄື່ອງມື {{mcp}}: ຄ່າຊ່ອງ {{field}} ຢູ່ນອກຊ່ວງ, ກະລຸນາກວດສອບແລະແກ້ໄຂຄ່າ", + "minRange": "ເຄື່ອງມື {{mcp}}: ຊ່ອງ {{field}} ຕ້ອງໃຫຍ່ກວ່າຫຼືເທົ່າກັບ {{value}}", + "maxRange": "ເຄື່ອງມື {{mcp}}: ຊ່ອງ {{field}} ຕ້ອງນ້ອຍກວ່າຫຼືເທົ່າກັບ {{value}}" + }, + "namePlaceholder": "ໃສ່ຊື່...", + "commandPlaceholder": "ໃສ່ຄຳສັ່ງ...", + "argsPlaceholder": "ໃສ່ອາກູເມັ້ນ...", + "envKey": "ໃສ່ຊື່ຕົວແປ (ກຸນແຈ)...", + "envValue": "ໃສ່ຄ່າຕົວແປ (ຄ່າ)...", + "inputKeyError": "ຊື່ຕົວແປ {{ name }} ຊ້ຳກັນ", + "urlPlaceholder": "ໃສ່ URL...", + "transportPlaceholder": "ເລືອກການຂົນສົ່ງ...", + "providerSearchPlaceholder": "ໃສ່ຄົ້ນຫາຜູ້ໃຫ້ບໍລິການ...", + "noProviderSearchResult": "ບໍ່ພົບຜູ້ໃຫ້ບໍລິການທີ່ກ່ຽວຂ້ອງ", + "toogleToolAlt": "ເປີດໃຊ້ງານເຄື່ອງມື MCP", + "logTitle": "ແລ່ນຄຳສັ່ງ UVX", + "logProcessing": "ກຳລັງປະມວນຜົນ...", + "no_tool_title": "ບໍ່ມີເຊີບເວີ MCP ທີ່ໃຊ້ໄດ້", + "no_oap_tool_message": { + "all": "ກະລຸນາເລືອກເຊີບເວີ MCP OAP ເພື່ອໃຊ້ງານ, ຫຼືເພີ່ມເຊີບເວີ MCP ກຳນົດເອງ", + "oap": "ກະລຸນາເລືອກເຊີບເວີ MCP OAP ເພື່ອໃຊ້ງານ", + "custom": "ກະລຸນາເພີ່ມເຊີບເວີ MCP ກຳນົດເອງ" + }, + "no_tool_message": "ກະລຸນາເພີ່ມເຊີບເວີ MCP", + "tab": { + "all": "ເຄື່ອງມືທັງໝົດ", + "oap": "ເຄື່ອງມື OAP", + "custom": "ເຄື່ອງມືກຳນົດເອງ" + }, + "oapStoreLinkAlt": "ເບິ່ງລາຍລະອຽດ", + "subToolsCount": "ເຄື່ອງມືທີ່ເປີດໃຊ້ງານ: {{count}} / {{total}}", + "disabledDescription": "ປິດການໃຊ້ງານ", + "unsaved": { + "title": "ການປ່ຽນແປງທີ່ບໍ່ໄດ້ບັນທຶກ", + "desc": "ທ່ານມີການປ່ຽນແປງທີ່ບໍ່ໄດ້ບັນທຶກ. ຖ້າທ່ານອອກຈາກໜ້ານີ້, ການປ່ຽນແປງຈະສູນເສຍ. ທ່ານຕ້ອງການດຳເນີນການຕໍ່ບໍ?", + "cancel": "ຍົກເລີກການປ່ຽນແປງ", + "save": "ບັນທຶກ" + }, + "oauthAlert": "ກະລຸນາຢືນຢັນວ່າທ່ານໄວ້ວາງໃຈຕົວເຊື່ອມຕໍ່ນີ້: ຕົວເຊື່ອມຕໍ່ນີ້ບໍ່ໄດ້ຮັບການຢັ້ງຢືນໂດຍ Dive. ທ່ານມີຄວາມຮັບຜິດຊອບສຳລັບການດຳເນີນການທັງໝົດທີ່ທ່ານປະຕິບັດກັບ Dive.", + "reload": { + "headerBtn": "ໂຫລດໃໝ່", + "headerBtnAlt": "ໂຫລດໃໝ່ແລະອັບເດດເຄື່ອງມື MCP" + }, + "oap": { + "type": { + "all": "ເຄື່ອງມືທັງໝົດ", + "base": "ສະແດງພຽງ Base", + "pro": "ສະແດງພຽງ Pro" + }, + "sort": { + "title": "ຈັດຮຽງ", + "popular": "ນິຍົມ", + "new": "ໃໝ່" + }, + "tag": "ແທັກ", + "no_search_data_title": "ບໍ່ພົບເຄື່ອງມື MCP", + "no_search_data": "ບໍ່ພົບຜົນການຄົ້ນຫາ, ກະລຸນາລ້າງຄຳຄົ້ນຫາຫຼືປັບເງື່ອນໄຂການກ່ອງ", + "clear_filter": "ລ້າງຕົວກ່ອງ", + "hint": "ເຊີບເວີ MCP ລະດັບສູງຕ້ອງການອັບເກຣດເປັນເວີຊັນ Pro ເພື່ອຕິດຕັ້ງ", + "high_cost_title": "ເປີດໃຊ້ງານເຊີບເວີ MCP ທີ່ມີຄ່າໃຊ້ຈ່າຍສູງ", + "high_cost_desc": "ທ່ານໄດ້ເລືອກເຊີບເວີ MCP ທີ່ໃຊ້ໂທເຄັນຫຼາຍ. ກະລຸນາກວດສອບວ່າການໃຊ້ງານແຜນຂອງທ່ານພຽງພໍບໍ່.", + "headerBtnAlt": "ເພີ່ມ / ເບິ່ງເຄື່ອງມື MCP OAP" + }, + "custom": { + "headerBtn": "ເພີ່ມ / ແກ້ໄຂການກຳນົດຄ່າ", + "headerBtnAlt": "ເພີ່ມ / ແກ້ໄຂເຄື່ອງມືກຳນົດເອງ", + "listAdd": "ເພີ່ມເຊີບເວີ MCP", + "titleAdd": "ເພີ່ມເຊີບເວີ MCP", + "titleEdit": "ແກ້ໄຂ {{tool}} MCP", + "titleEditJson": "ການຕັ້ງຄ່າເຄື່ອງມື MCP" + } + }, + "modelConfig": { + "title": "ການຕັ້ງຄ່າໂມເດລ", + "customInstructions": "ຄຳຊີ້ນຳກຳນົດເອງ", + "customInstructionsPlaceholder": "ໃສ່ຄຳຊີ້ນຳລະບົບກຳນົດເອງ...", + "customInstructionsDescription": "ຄຳຊີ້ນຳເຫຼົ່ານີ້ຈະຖືກເພີ່ມທີ່ທ້າຍຄຳຊີ້ນຳລະບົບຂອງແຕ່ລະຄຳຂໍ", + "saveInstructions": "ບັນທຶກຄຳແນະນຳ", + "customRulesSaved": "ບັນທຶກຄຳແນະນຳກຳນົດເອງແລ້ວ", + "customRulesFailed": "ການບັນທຶກຄຳແນະນຳກຳນົດເອງລົ້ມເຫລວ", + "modelDescription": "ຊື່ໂມເດລທີ່ຈະໃຊ້", + "modelDescriptionHint": "ຊື່ໂມເດລທີ່ຈະໃຊ້ (ກະລຸນາໃສ່ API Key ກ່ອນເພື່ອເບິ່ງໂມເດລທີ່ໃຊ້ໄດ້)" + }, + "common": { + "close": "ປິດ", + "confirm": "ຢືນຢັນ", + "cancel": "ຍົກເລີກ", + "copy": "ສຳເນົາ", + "copySuccess": "ສຳເນົາແລ້ວ", + "zoomInImage": "ຂະຫຍາຍຮູບ", + "copyImage": "ສຳເນົາຮູບ", + "copyImageUrl": "ສຳເນົາ URL ຮູບ", + "downloadImage": "ດາວໂຫລດຮູບ", + "login": "ເຂົ້າສູ່ລະບົບ", + "signup": "ລົງທະບຽນ", + "save": "ບັນທຶກ", + "signout": "ອອກຈາກລະບົບ" + }, + "models": { + "title": "ການຕັ້ງຄ່າໂມເດລ", + "newProvider": "+ ເພີ່ມຜູ້ໃຫ້ບໍລິການ", + "parameters": "ການຕັ້ງຄ່າພາລາມິເຕີ", + "instructionsSetting": "ການຕັ້ງຄ່າຄຳແນະນຳ", + "listTitle": "ກຳນົດຄ່າຜູ້ໃຫ້ບໍລິການໂມເດລ", + "optional": "(ທາງເລືອກ)", + "selfOptional": "(ທາງເລືອກ)", + "unSupportModelCount": "ທ່ານໄດ້ເລືອກໂມເດລທີ່ບໍ່ຮອງຮັບ {{count}} ລາຍການ", + "deleteTitle": "ຢືນຢັນການລຶບ Key {{name}}?", + "deleteDescription": "ການກະທຳນີ້ບໍ່ສາມາດຍົກເລີກໄດ້", + "deleteAllTitle": "ຢືນຢັນການລຶບໂມເດລ?", + "deleteAllDescription": "ຫຼັງຈາກລຶບແລ້ວຈະບໍ່ມີໂມເດລທີ່ໃຊ້ໄດ້ສຳລັບການສົນທະນາ", + "deleteToast": "ລຶບ Key {{name}} ແລ້ວ", + "deleteFailed": "ການລຶບການຢັ້ງຢືນຜູ້ໃຫ້ບໍລິການລົ້ມເຫລວ", + "providerMenu1": "ແກ້ໄຂຜູ້ໃຫ້ບໍລິການ", + "providerMenu2": "ຈັດການໂມເດລ", + "providerMenu3": "ລຶບ", + "verifying": "ກຳລັງຢັ້ງຢືນ API Key ແລະໂມເດລ...", + "verifyingAbort": "ການຢັ້ງຢືນຖືກຍົກເລີກ, ກະລຸນາລອງໃໝ່ໃນພາຍຫຼັງ", + "apiKeyError": "API Key ບໍ່ຖືກຕ້ອງ, ກະລຸນາກວດສອບແລະໃສ່ API Key ຂອງທ່ານໃໝ່", + "closeAllTitle": "ຢືນຢັນການປິດການໃຊ້ງານ?", + "closeAllDescription": "ຫຼັງຈາກປິດການໃຊ້ງານແລ້ວຈະບໍ່ມີໂມເດລທີ່ໃຊ້ໄດ້ສຳລັບການສົນທະນາ", + "noModelAlertTitle": "ບໍ່ມີໂມເດລທີ່ໃຊ້ໄດ້!", + "noModelAlertDescription": "ໂມເດລທີ່ເລືອກທັງໝົດບໍ່ຮອງຮັບ, ບໍ່ສາມາດສົນທະນາໄດ້", + "selectModelPlaceHolder": "ເລືອກໂມເດລ...", + "noModelAlertOption": "ບໍ່ມີໂມເດລທີ່ໃຊ້ໄດ້", + "popupTitle": "ໂມເດລທີ່ໃຊ້ໄດ້", + "searchPlaceholder": "ຄົ້ນຫາໂມເດລ...", + "noResult": "ບໍ່ມີໂມເດລທີ່ໃຊ້ໄດ້", + "reloadModelList": "ໂຫລດໃໝ່", + "modelSaved": "ບັນທຶກໂມເດລແລ້ວ", + "modelSaveFailed": "ການບັນທຶກໂມເດລລົ້ມເຫລວ", + "parameterSaved": "ບັນທຶກພາລາມິເຕີແລ້ວ", + "parameterSaveFailed": "ການບັນທຶກພາລາມິເຕີລົ້ມເຫລວ", + "ignored": "ຂ້າມການຢັ້ງຢືນສຳລັບໂມເດລນີ້", + "unSupportModel": "ໂມເດລບໍ່ຮອງຮັບ", + "unToolCallsSupport": "ບໍ່ຮອງຮັບການເອີ້ນໃຊ້ເຄື່ອງມື", + "verify": "ຢັ້ງຢືນ", + "verifyIgnore": "ລະເລີຍ", + "verifyIgnoreAlt": "ການແຈ້ງເຕືອນການຢັ້ງຢືນຈະບໍ່ສະແດງອີກຕໍ່ໄປ", + "verifyNextTime": "ພາຍຫຼັງ", + "verifyNextTimeAlt": "ຈະຂໍໃຫ້ຢັ້ງຢືນໃນຄັ້ງຕໍ່ໄປ", + "verifyTitle": "! ກວດພົບໂມເດລທີ່ຍັງບໍ່ໄດ້ຢັ້ງຢືນ {{count}} ລາຍການ", + "verifyDesc": "ໂມເດລຕໍ່ໄປນີ້ຍັງບໍ່ໄດ້ຮັບການຢັ້ງຢືນ. ທ່ານຕ້ອງການຢັ້ງຢືນພວກມັນບໍ?", + "progressVerifying": "ກຳລັງຢັ້ງຢືນໂມເດລ, ກະລຸນາລໍຖ້າ...", + "verifyMenu": { + "advanced": "ການຕັ້ງຄ່າຂັ້ນສູງ", + "verify": "ຢັ້ງຢືນໂມເດລ", + "ignore": "ລະເລີຍການຢັ້ງຢືນ", + "delete": "ລຶບໂມເດລ" + }, + "customModelID": { + "add": "+ ID ໂມເດລກຳນົດເອງ", + "title": "ID ໂມເດລກຳນົດເອງ", + "placeholder": "ໃສ່ ID ໂມເດລກຳນົດເອງ...", + "Error": { + "empty": "ID ໂມເດລກຳນົດເອງຕ້ອງບໍ່ວ່າງເປົ່າ", + "exist": "ID ໂມເດລກຳນົດເອງມີຢູ່ແລ້ວ" + } + }, + "copyContent": "ສຳເນົາເນື້ອໃນ", + "editProviderTitle": "ແກ້ໄຂການກຳນົດຄ່າ {{provider}}", + "hide": "ເຊື່ອງ", + "display": "ສະແດງ", + "copy": "ສຳເນົາ", + "modelSetting": "ການຕັ້ງຄ່າຂັ້ນສູງ", + "streamingModeTooltip": "ໂໝດສະຕຣີມມິງແມ່ນເມື່ອໂມເດລຕອບກັບ, ມັນຈະສະແດງເນື້ອຫາທີລະກ້າວ, ແທນທີ່ຈະສະແດງທັງໝົດພ້ອມກັນ. ການປິດປຸ່ມ, ໃນໂໝດທີ່ບໍ່ແມ່ນສະຕຣີມມິງ, ຈະລໍຖ້າໃຫ້ໂມເດລສ້າງເນື້ອຫາທັງໝົດແລະສະແດງທັງໝົດພ້ອມກັນ, ຫຼີກລ່ຽງບັນຫາຄວາມເຂົ້າກັນໄດ້ກັບການເອີ້ນໃຊ້ເຄື່ອງມືໃນໂມເດລ.", + "streamingModeDescription": "ຄວບຄຸມວິທີການສະແດງການຕອບກັບຂອງໂມເດລ", + "streamingModeAlert": "ການແຈ້ງເຕືອນ: ບາງໂມເດລຮອງຮັບການເອີ້ນໃຊ້ເຄື່ອງມືພຽງໃນໂໝດສະຕຣີມມິງຫຼືໂໝດທີ່ບໍ່ແມ່ນສະຕຣີມມິງເທົ່ານັ້ນ. ແນະນຳໃຫ້ເຂົ້າໃຈຄວາມຕ້ອງການຂອງທ່ານຢ່າງເຕັມທີ່ກ່ອນປັບພາລາມິເຕີນີ້.", + "customInput": "ການນຳເຂົ້າກຳນົດເອງ", + "addCustomParameter": "ເພີ່ມພາລາມິເຕີກຳນົດເອງ", + "parameterName": "ຊື່ພາລາມິເຕີ", + "parameterType": "ປະເພດພາລາມິເຕີ", + "parameterValue": "ຄ່າພາລາມິເຕີ", + "parameterNameDescription": "ໃສ່ຊື່, ເຊັ່ນ temperature", + "parameterTypeDescription": "ເລືອກປະເພດ", + "parameterValueDescription": "ກະລຸນາເລືອກປະເພດພາລາມິເຕີກ່ອນແລ້ວຈຶ່ງໃສ່ຄ່າ", + "parameterNameDuplicate": "ຊື່ພາລາມິເຕີມີຢູ່ແລ້ວ", + "parameterTypeInt": "ເລກຈຳນວນເຕັມ", + "parameterTypeFloat": "ເລກທົດນິຍົມ", + "parameterTypeString": "ສະຕຣິງ", + "parameterTypeIntDescription": "ຊ່ວງທີ່ອະນຸຍາດ 0-1M", + "parameterTypeFloatDescription": "ຊ່ວງທີ່ອະນຸຍາດ 0.0-1.0", + "parameterTypeStringDescription": "ກະລຸນາໃສ່ສະຕຣິງ, ເຊັ່ນ medium", + "reasoningLevelDescription": "ກຳນົດຄວາມເລິກການຄິດຂອງໂມເດລ", + "reasoningLevelTooltip": "ຕ່ຳແທນການຕອບສະໜອງທີ່ວ່ອງໄວ, ເນັ້ນໜັກໃສ່ບົດສະຫຼຸບແລະບໍ່ມີລາຍລະອຽດເພີ່ມເຕີມ, ດ້ວຍການໃຊ້ເຫດຜົນທີ່ກົງໄປກົງມາແລະງ່າຍດາຍ. ກາງໃຫ້ການຕອບສະໜອງທີ່ມີຄຳອະທິບາຍທາງເຫດຜົນພຽງພໍ, ຄ້ອຍຄຸມຂໍ້ມູນສຳຄັນ. ສູງໃຫ້ການຕອບສະໜອງເລິກເຊິ່ງດ້ວຍການວິເຄາະແລະຄຳອະທິບາຍທີ່ມີໂຄງສ້າງແລະລະອຽດ.", + "tokenBudgetDescription": "ກຳນົດຄ່າການໃຊ້ເຫດຜົນ ({{min}}~{{max}})", + "parameterVerify": "ການຢັ້ງຢືນພາລາມິເຕີ", + "verifyErrorInfo": "ລາຍລະອຽດຄວາມຜິດພາດການຢັ້ງຢືນ", + "verifyErrorMsg": "ໂມເດລບໍ່ໄດ້ໃຊ້ເຄື່ອງມືໃດໆໃນລະຫວ່າງການຢັ້ງຢືນ, ເຊິ່ງອາດເປັນເພາະການຂາດການຮອງຮັບຫຼືບໍ່ໄດ້ຖືກກະຕຸ້ນ. ດັ່ງນັ້ນຈຶ່ງບໍ່ສາມາດຢືນຢັນໄດ້ວ່າມັນຮອງຮັບເຄື່ອງມືຫຼືບໍ່.", + "verifyStatusSuccess": "ການຢັ້ງຢືນໂມເດລສຳເລັດ, ເປີດໃຊ້ງານດ້ວຍການກຳນົດຄ່າເດີມ", + "verifyStatusSuccessInPrompt": "ການຢັ້ງຢືນໂມເດລສຳເລັດ, ເປີດໃຊ້ງານດ້ວຍ MCP Prompts", + "verifyUnexpectedFailed": "ການຢັ້ງຢືນໂມເດລລົ້ມເຫລວ, ເກີດຄວາມຜິດພາດທີ່ບໍ່ຮູ້ຈັກ, ກະລຸນາລອງໃໝ່ໃນພາຍຫຼັງ", + "oapUsageLimit": "ເຖິງຂໍ້ຈຳກັດການໃຊ້ງານ, ຊົ່ວຄາວບໍ່ສາມາດໃຊ້ໄດ້" + }, + "system": { + "title": "ການຕັ້ງຄ່າລະບົບ", + "language": "ພາສາລະບົບ", + "languageDefault": "ຄ່າເລີ່ມຕົ້ນຂອງລະບົບ", + "languageDescription": "ພາສາທີ່ໃຊ້ໃນການສະແດງສ່ວນຕິດຕໍ່ລະບົບ. ພາສາທີ່ໃຊ້ໃນໂມເດລສາມາດປ່ຽນແປງໄດ້ໃນໜ້າການຕັ້ງຄ່າໂມເດລ, ນີ້ໝາຍເຖິງພາສາທີ່ສະແດງໃນສ່ວນຕິດຕໍ່ Dive", + "theme": "ໂໝດມືດ", + "themeDescription": "ສະຫຼັບລະຫວ່າງຄ່າເລີ່ມຕົ້ນຂອງລະບົບແລະໂໝດມືດ", + "defaultInstructions": "speak in Lao", + "autoDownload": "ດາວໂຫລດການອັບເດດອັດຕະໂນມັດ", + "autoDownloadDescription": "ດາວໂຫລດເວີຊັນໃໝ່ຂອງ DIVE ໂດຍອັດຕະໂນມັດເມື່ອຜູ້ໃຊ້ເລີ່ມໃໝ່ຫຼືຄລິກປຸ່ມ \"ອັບເກຣດ\" ໃນໜ້າເມນູ, ເວີຊັນໃໝ່ຈະຖືກເປີດໃຊ້ງານ", + "autoLaunch": "ເລີ່ມອັດຕະໂນມັດ", + "autoLaunchDescription": "ເລີ່ມ Dive AI ໂດຍອັດຕະໂນມັດເມື່ອລະບົບເລີ່ມຕົ້ນ", + "minimalToTray": "ຫຍໍ້ໃສ່ຖາດ", + "minimalToTrayDescription": "ເມື່ອປິດໜ້າຕ່າງ, ໂປແກຣມຈະຖືກຫຍໍ້ລົງໃສ່ຖາດລະບົບແທນທີ່ຈະອອກຢ່າງສົມບູນ", + "loginTitle": "ເຂົ້າສູ່ລະບົບ OAP", + "loginDescription": "ໃຊ້ OpenAgentPlatform ເພື່ອເຂົ້າສູ່ລະບົບ, ບໍ່ຈຳເປັນຕ້ອງມີພື້ນຖານດ້ານເຕັກນິກເພື່ອເຊື່ອມຕໍ່ LLM, AI Agents ແລະ MCP Servers ໄດ້ງ່າຍ — ປະສົບການໂຊລູຊັນອັດສະລິຍະຕອນນີ້!", + "personalInformationTitle": "ຂໍ້ມູນສ່ວນຕົວ", + "defaultSystemPrompt": "ຄຳຊີ້ນຳລະບົບເລີ່ມຕົ້ນຂອງ Dive", + "defaultSystemPromptDescription": "ຄຳຊີ້ນຳລະບົບເລີ່ມຕົ້ນຂອງ Dive ຖືກໃຊ້ເປັນຄຳຊີ້ນຳລະບົບເລີ່ມຕົ້ນສຳລັບການສົນທະນາ. ມັນບອກ LLM ວ່າການສົນທະນາ Dive ຮອງຮັບ KaTeX / Markdown / Mermaid ແລະອື່ນໆ. ຄຸນສົມບັດນີ້ໃຊ້ໂທເຄັນບາງຕົວ, ເຊິ່ງອາດເຮັດໃຫ້ການຕອບສະໜອງຊ້າກວ່າຄຳຊີ້ນຳທີ່ບໍ່ມີຄຳຊີ້ນຳລະບົບ. ໃນທາງກັບກັນ, ຖ້າມັນຖືກປິດການໃຊ້ງານ, ຄຸນນະພາບການຕອບສະໜອງຂອງ LLM ອາດຫຼຸດລົງ", + "usageAnalytics": "ໄປທີ່ໜ້າ Dashboard ໃນ OAP Hub ເພື່ອເບິ່ງ", + "usageAnalyticsTitle": "ການວິເຄາະການໃຊ້ງານ", + "userEdit": "ໄປທີ່ໜ້າບັນຊີໃນ OAP Hub ເພື່ອເຮັດການປ່ຽນແປງ", + "planSectionTitle": "ການໃຊ້ງານແຜນປັດຈຸບັນ", + "subscriptionDate": "ວັນທີສະໝັກສະມາຊິກ", + "remainingUsage": "ການໃຊ້ງານທີ່ເຫຼືອ", + "usageWarningTitle": "ເຖິງຂໍ້ຈຳກັດການໃຊ້ງານໂທເຄັນແລ້ວ.", + "usageWarning": "ໂຄຕ້າແຜນ Pro ຈະຖືກຣີເຊັດໃນເດືອນໜ້າ, ຫຼືຊື້ແພັກເກັດໂທເຄັນສຳລັບການໃຊ້ງານເພີ່ມເຕີມ. ໂມເດລພື້ນຖານແລະ MCP ຍັງສາມາດໃຊ້ໄດ້.", + "BaseSubscriptionDate": "ບໍ່ມີວັນໝົດອາຍຸ", + "BaseRemainingUsage": "ບໍ່ມີຂໍ້ຈຳກັດ", + "BaseUsageWarning": "ແຜນພື້ນຖານລວມການເຂົ້າເຖິງໂມເດລພື້ນຖານແລະ MCP ພື້ນຖານ. ເພື່ອໃຊ້ໂມເດລແລະ MCP ອື່ນໆ, ກະລຸນາອັບເກຣດແຜນຂອງທ່ານຈາກ ໜ້າແຜນ.", + "customPromptDescription": "ຖ້າທ່ານຕ້ອງການຄຳແນະນຳກຳນົດເອງເພີ່ມເຕີມ, ກະລຸນາຄລິກຟັງຊັນ \"ຄຳຊີ້ນຳກຳນົດເອງ\" ດ້ານລຸ່ມເພື່ອຕັ້ງຄ່າ.", + "customPromptButton": "ຄຳຊີ້ນຳກຳນົດເອງ", + "tokenPackageTitle": "ການໃຊ້ງານແພັກເກັດໂທເຄັນ", + "tokenPackageHint": "ແພັກເກັດໂທເຄັນບໍ່ມີວັນໝົດອາຍຸແລະຈະຖືກໃຊ້ພຽງແຕ່ຫຼັງຈາກໂຄຕ້າແຜນລາຍເດືອນຖືກໃຊ້ໝົດ.", + "tokenPackageRemainingUsage": "ການໃຊ້ງານທີ່ເຫຼືອ", + "tokenPackageWarningTitle": "ໂຄຕ້າໂທເຄັນຖືກໃຊ້ໝົດແລ້ວ.", + "tokenPackageWarning": "ທ່ານສາມາດເຕີມການໃຊ້ງານໂທເຄັນເພີ່ມເຕີມທີ່ OAPhub ໜ້າ Dashboard.", + "skipTlsVerifyWarning": "ຄຳເຕືອນດ້ານຄວາມປອດໄພ: ການລະເລີຍການຢັ້ງຢືນໃບຢັ້ງຢືນອາດຫຼຸດຄວາມປອດໄພຂອງການເຊື່ອມຕໍ່. ແນະນຳໃຫ້ໃຊ້ໃນສະພາບແວດລ້ອມເຄືອຂ່າຍທີ່ເຊື່ອຖືໄດ້." + }, + "toast": { + "copiedToClipboard": "ສຳເນົາໄປຍັງຄລິບບອດແລ້ວ", + "copyFailed": "ການສຳເນົາລົ້ມເຫລວ", + "copiedImage": "ສຳເນົາຮູບແລ້ວ", + "downloadedImage": "ດາວໂຫລດຮູບແລ້ວ" + }, + "keymap": { + "title": "ປຸ່ມລັດແປ້ນພິມ", + "events": { + "chat-input_submit": "ສົ່ງຂໍ້ຄວາມ", + "chat-input_upload-file": "ອັບໂຫລດໄຟລ໌", + "chat-input_focus": "ໂຟກັສການນຳເຂົ້າ", + "chat-input_paste-last-message": "ວາງຂໍ້ຄວາມລ່າສຸດ", + "chat-message_copy-last": "ສຳເນົາຂໍ້ຄວາມລ່າສຸດ", + "chat_delete": "ລຶບການສົນທະນາ", + "global_new-chat": "ການສົນທະນາໃໝ່", + "global_toggle-sidebar": "ສະຫຼັບແຖບດ້ານຂ້າງ", + "global_close-layer": "ປິດໜ້າຕ່າງ", + "global_toggle-keymap-modal": "ສະຫຼັບຄວາມຊ່ວຍເຫຼືອປຸ່ມລັດ" + } + }, + "update": { + "downloading": "ກຳລັງດາວໂຫລດ...", + "readyToInstall": "ພ້ອມຕິດຕັ້ງ", + "clickToInstall": "ຄລິກເພື່ອຕິດຕັ້ງການອັບເດດ" + }, + "login": { + "subtitle": "Dive AI ແມ່ນແອັບພລິເຄຊັນເດສທັອບໂອເພນຊອສທີ່ລວມໂມເດລພາສາຂະໜາດໃຫຍ່ຕ່າງໆທີ່ຮອງຮັບການເອີ້ນຟັງຊັນຢ່າງກົງກັນ. ຜ່ານສ່ວນຕິດຕໍ່ທີ່ສະອາດແລະໃຊ້ງານງ່າຍ, ທ່ານສາມາດສົນທະນາກັບ AI ທີ່ທັນສະໄໝໄດ້ງ່າຍ, ຕັ້ງແຕ່ຄຳຖາມປະຈຳວັນໄປຮອດວຽກງານອາຊີບ, ໄດ້ຮັບຄຳຕອບທີ່ແມ່ນຍຳແລະເຮັດໃຫ້ມັນເປັນຜູ້ຊ່ວຍອັດສະລິຍະຂອງທ່ານ.", + "title1": "ໃຊ້ໂມເດລທີ່ທ່ານກຽມໄວ້ເອງ", + "description1": "ເໝາະສຳລັບຜູ້ຊ່ຽວຊານ AI ຂັ້ນສູງ. ຖ້າທ່ານມີການກຳນົດຄ່າຂອງຕົນເອງພ້ອມແລ້ວ, ບໍ່ວ່າຈະເປັນ Ollama ໃນທ້ອງຖິ່ນ, llama.cpp ຫຼື API LLM ທາງໄກຈາກ Openrouter, OpenAI, Anthropic ຫຼືບໍລິສັດ AI ອື່ນໆ, ກະລຸນາໃຊ້ທາງເລືອກນີ້.", + "button1": "ໄປທີ່ການຕັ້ງຄ່າໂມເດລ", + "title2": "ໃຊ້ OpenAgentPlatform", + "description2": "OAP ເຮັດໃຫ້ທຸກຄົນສາມາດໃຊ້ບໍລິການ AI ທີ່ທັນສະໄໝທີ່ສຸດໄດ້ງ່າຍ, ເຊື່ອມຕໍ່ LLM, AI Agents ແລະ MCP Servers ໂດຍບໍ່ຕ້ອງການຄວາມຊ່ຽວຊານດ້ານເຕັກນິກ. ສຳຫຼວດຄວາມເປັນໄປໄດ້ທີ່ບໍ່ຈຳກັດຂອງ AI ແລະປະສົບການໂຊລູຊັນອັດສະລິຍະຕອນນີ້.", + "button2": "ລົງທະບຽນສຳລັບ OAP", + "button3": "ເຂົ້າສູ່ລະບົບ OAP" + }, + "InstallHostDependencies": { + "title": "ກຳລັງດາວໂຫລດການຂຶ້ນກັບຂອງໂຮສ...", + "retry": "ລອງໃໝ່", + "stop": "ຢຸດ", + "tip": "ຖ້າເກີດຄວາມຜິດພາດໃນລະຫວ່າງການດາວໂຫລດ, ກະລຸນາປິດໜ້າຕ່າງນີ້ກ່ອນແລະເລີ່ມແອັບພລິເຄຊັນໃໝ່ເພື່ອດາວໂຫລດໃໝ່." + }, + "deeplink": { + "mcpInstallConfirm": "ເພີ່ມບໍລິການ MCP stdio - ທ່ານຈະເພີ່ມ MCP ຜ່ານຄຳສັ່ງຕໍ່ໄປນີ້, ກະລຸນາຢືນຢັນ:" + } +} + diff --git a/src/locales/no/translation.json b/src/locales/no/translation.json new file mode 100644 index 00000000..8e0c4694 --- /dev/null +++ b/src/locales/no/translation.json @@ -0,0 +1,442 @@ +{ + "header": { + "title": "Dive AI", + "openSidebar": "Åpne sidefelt", + "closeSidebar": "Lukk sidefelt" + }, + "chat": { + "placeholder": "Send melding...", + "newChat": "Ny chat", + "newChatTooltip": "Start en ny samtale", + "history": "Historikk", + "copyCode": "Kopier", + "previewCode": "Klikk for forhåndsvisning", + "uploadFile": "Last opp fil", + "send": "Send", + "untitledChat": "Navnløs chat", + "deleteChat": "Slett chat", + "deleteSuccess": "Chat slettet", + "deleteFailed": "Sletting mislyktes", + "confirmDelete": "Bekreft sletting", + "confirmDeleteDescription": "Når den er slettet, kan chatten ikke gjenopprettes.", + "tools": { + "button": "Verktøy", + "enabledHint": "{{enabled}} verktøy aktivert", + "failedHint": "{{enabled}} verktøy aktivert, {{failed}} verktøy mislyktes" + }, + "abort": "Stopp generering", + "retry": "Prøv igjen", + "noModelAlert": "Ingen modeller tilgjengelige", + "noModelBanner": "Ingen modeller tilgjengelige, velg en modell først", + "onLimit": "Du har nådd bruksgrensen for {{plan}}-planen, oap-modeller kan ikke brukes", + "modelSettings": "Modellinnstillinger", + "copy": "Kopier", + "copied": "Kopiert", + "edit": "Rediger", + "editDescription": "Å redigere denne meldingen vil generere et nytt svar", + "cancel": "Avbryt", + "save": "Lagre", + "toolCalls": "🛠 {{name}} Verktøyanrop resultat", + "unsupportTools": "{{model}} støtter ikke verktøyanrop", + "dragFiles": "Slipp filer her for å legge til i chatten", + "tools-btn": { + "disableToast": "Verktøyanrop deaktivert", + "disable": "Deaktiver verktøyanrop", + "enableToast": "Verktøyanrop aktivert", + "enable": "Aktiver verktøyanrop" + } + }, + "welcome": { + "title": "Velkommen til Dive AI", + "subtitle": "Start din AI-samtale", + "startChat": "Start chat" + }, + "setup": { + "title": "Innledende oppsett", + "subtitle": "Konfigurer modellinnstillinger", + "required": "Dette feltet er påkrevd", + "submit": "Lagre innstillinger", + "provider": "Modellleverandør", + "verify": "Verifiser modell", + "verifying": "Verifiserer...", + "verifySuccess": "Modellverifisering vellykket", + "verifySuccessNoTool": "Modellverifisering vellykket, men støtter ikke verktøyanrop", + "verifyFailed": "Modellverifisering mislyktes", + "verifyError": "Feil oppstod under verifisering", + "saveSuccess": "Innstillinger lagret vellykket", + "saveFailed": "Lagring av innstillinger mislyktes", + "back": "Tilbake", + "parameters": "Parametere", + "topPDescription": "Top-P-parameteren kontrollerer ordvalgområdet. En verdi på 0 bruker standardverdien; lavere verdier velger bare ord med høy sannsynlighet, noe som gir konservative svar; høyere verdier utvider vokabularområdet, noe som fører til mer varierte svar.", + "temperatureDescription": "Temperaturparameteren kontrollerer svartillfeldighet. En verdi på 0 bruker standardverdien; lavere verdier gir mer presise og stabile svar; høyere verdier genererer mer kreative, men mindre strenge svar." + }, + "sidebar": { + "tools": "Verktøystyring (MCP)", + "settings": "Modellinnstillinger", + "update": "Oppdatering tilgjengelig", + "models": "Modellinnstillinger", + "system": "Systeminnstillinger", + "manageAndSettings": "Administrasjon og innstillinger", + "OAPhub": "OAPhub", + "signOut": "Logg ut", + "chat": { + "starredChat": "Favoritter", + "starChat": "Legg til favoritter", + "unStarChat": "Fjern fra favoritter", + "starFailed": "Mislyktes å legge til favoritter", + "renameChat": "Gi nytt navn", + "renameFailed": "Gi nytt navn mislyktes", + "deleteChat": "Slett" + } + }, + "setting": { + "tabs": { + "Tools": "MCP-verktøystyring", + "Model": "Modellleverandør", + "Account": "Konto", + "System": "Systeminnstillinger" + } + }, + "tools": { + "title": "Verktøystyring (MCP)", + "editConfig": "Rediger konfigurasjon", + "editConfigAlt": "Rediger MCP-serverkonfigurasjon", + "configTitle": "MCP-serverkonfigurasjon", + "save": "Lagre", + "cancel": "Avbryt", + "saveSuccess": "Innstillinger lagret vellykket", + "saveFailed": "Lagring av innstillinger mislyktes", + "toggleFailed": "En feil oppstod", + "reloadFailed": "{{toolName}} en feil oppstod, omlasting mislyktes", + "reloadAllFailed": "{{number}} verktøyanrop en feil oppstod, omlasting mislyktes", + "openConfigFolder": "Konfigurasjonsmappe", + "openConfigFolderAlt": "Åpne konfigurasjonsmappe", + "fetchFailed": "Mislyktes å laste verktøy", + "configFetchFailed": "Mislyktes å laste konfigurasjon", + "configSaveAborted": "Konfigurasjonslagring avbrutt", + "invalidJson": "Ugyldig JSON-format", + "updateFailed": "{{serverName}} mislyktes å laste: {{error}}", + "installFailed": "Installasjon mislyktes", + "startFailed": "Start mislyktes", + "toolMenu": { + "delete": "Slett", + "edit": "Rediger", + "reload": "Last på nytt", + "detail": "Vis detaljer" + }, + "delete": "Slett", + "jsonCopy": "Kopier", + "jsonCopied": "Kopiert", + "jsonDownload": "Last ned", + "deleteTitle": "Bekreft sletting av {{mcp}}-verktøy?", + "deleteAllTitle": "Bekreft sletting av alle verktøy?", + "fieldTitle": "Felt", + "fieldTitleAlt": "Felt oppfyller vanligvis de fleste behov, men hvis dine MCP-innstillinger krever ekstra felt eller forskjellige typer, kan du redigere direkte i JSON-tekstområdet til høyre for å oppfylle programmets krav", + "initialTimeoutAlt": "Den innledende tilkoblingsventetiden er satt til 10 sekunder som standard, men kan settes til et hvilket som helst flyttall på 10 sekunder eller mer. Det er ingen grense for antall sekunder. Det anbefales å justere denne verdien hvis serveren har en langsom tilkobling.", + "initialTimeoutPlaceholder": "Skriv inn Initial Timeout...", + "initialTimeoutError": "Vennligst skriv inn et tall som er større enn eller lik 10", + "jsonDesc": "Vennligst skriv inn eller lim inn MCP Server JSON i feltet", + "addArg": "Legg til argument", + "addEnv": "Legg til miljøvariabel", + "jsonFormatError": { + "addFormat": "Konfigurasjonsformatfeil, vennligst sjekk og korriger formatet", + "format": "{{mcp}} konfigurasjonsformatfeil, vennligst sjekk og korriger formatet", + "nameEmpty": "Navnet kan ikke være tomt, vennligst skriv inn et gyldig navn", + "nameExist": "En konfigurasjon med navnet \"{{mcp}}\" eksisterer allerede", + "stringError": "Verktøy {{mcp}}: Feltet {{field}} må være en streng", + "numberError": "Verktøy {{mcp}}: Feltet {{field}} må være et tall", + "floatError": "Verktøy {{mcp}}: Feltet {{field}} må være et flyttall", + "booleanError": "Verktøy {{mcp}}: Feltet {{field}} må settes til true eller false", + "arrayError": "Verktøy {{mcp}}: Feltet {{field}} må oppgis som en matrise", + "objectError": "Verktøy {{mcp}}: Feltet {{field}} må oppgis som et objekt", + "optionError": "Verktøy {{mcp}}: Feltet {{field}} kan bare være {{options}}", + "requiredError": "Verktøy {{mcp}}: Feltet {{field}} er påkrevd", + "jsonError": "Verktøy {{mcp}}: JSON-formatfeil, vennligst sjekk og korriger formatet", + "toolNumberError": "Bare ett verktøy kan settes i redigeringsmodus, vennligst fjern andre ikke-verktøyselementer", + "enabled": "Verktøy {{mcp}}: Feltet enabled må settes til true eller false", + "command": "Verktøy {{mcp}}: Feltet command må være en streng", + "args": "Verktøy {{mcp}}: Feltet args må oppgis som en matrise", + "env": "Verktøy {{mcp}}: Feltet env må oppgis som et objekt", + "url": "Verktøy {{mcp}}: Feltet url må være en streng", + "transport": "Verktøy {{mcp}}: Feltet transport kan bare være {{options}}", + "initialTimeout": "Verktøy {{mcp}}: Feltet initialTimeout må være et flyttall", + "range": "Verktøy {{mcp}}: Feltverdien {{field}} er utenfor området, vennligst sjekk og korriger verdien", + "minRange": "Verktøy {{mcp}}: Feltet {{field}} må være større enn eller lik {{value}}", + "maxRange": "Verktøy {{mcp}}: Feltet {{field}} må være mindre enn eller lik {{value}}" + }, + "namePlaceholder": "Skriv inn navn...", + "commandPlaceholder": "Skriv inn kommando...", + "argsPlaceholder": "Skriv inn argumenter...", + "envKey": "Skriv inn variabelnavn (Nøkkel)...", + "envValue": "Skriv inn variabelverdi (Verdi)...", + "inputKeyError": "{{ name }} variabelnavn duplikat", + "urlPlaceholder": "Skriv inn URL...", + "transportPlaceholder": "Velg transport...", + "providerSearchPlaceholder": "Skriv inn søk leverandør...", + "noProviderSearchResult": "Ingen relatert leverandør funnet", + "toogleToolAlt": "Aktiver MCP-verktøy", + "logTitle": "Kjør UVX-kommando", + "logProcessing": "Behandler...", + "no_tool_title": "Ingen MCP-servere tilgjengelige", + "no_oap_tool_message": { + "all": "Vennligst velg en OAP MCP-server å bruke, eller legg til en tilpasset MCP-server.", + "oap": "Vennligst velg en OAP MCP-server å bruke.", + "custom": "Vennligst legg til en tilpasset MCP-server." + }, + "no_tool_message": "Vennligst legg til en MCP-server.", + "tab": { + "all": "Alle verktøy", + "oap": "OAP-verktøy", + "custom": "Tilpassede verktøy" + }, + "oapStoreLinkAlt": "Vis detaljer", + "subToolsCount": "Verktøy aktivert: {{count}} / {{total}}", + "disabledDescription": "Deaktivert", + "unsaved": { + "title": "Ulagrede endringer", + "desc": "Du har ulagrede endringer. Hvis du forlater denne siden, vil endringene gå tapt. Vil du fortsette?", + "cancel": "Avbryt endringer", + "save": "Lagre" + }, + "oauthAlert": "Vennligst bekreft at du stoler på denne tilkoblingen: denne tilkoblingen er ikke verifisert av Dive. Du er ansvarlig for alle operasjoner du utfører med Dive.", + "reload": { + "headerBtn": "Last på nytt", + "headerBtnAlt": "Last på nytt og oppdater MCP-verktøy" + }, + "oap": { + "type": { + "all": "Alle verktøy", + "base": "Vis bare Base", + "pro": "Vis bare Pro" + }, + "sort": { + "title": "Sorter", + "popular": "Populær", + "new": "Ny" + }, + "tag": "Merke", + "no_search_data_title": "Ingen MCP-verktøy funnet", + "no_search_data": "Ingen søkeresultater funnet, vennligst tøm søkeordet eller juster filtervilkårene.", + "clear_filter": "Tøm filter", + "hint": "Høynivå MCP-servere krever oppgradering til Pro-versjonen for installasjon", + "high_cost_title": "Aktiver høykostnads MCP-servere", + "high_cost_desc": "Du har valgt MCP-servere som forbruker mange tokens. Vennligst sjekk om planbruken din er tilstrekkelig.", + "headerBtnAlt": "Legg til / Vis OAP MCP-verktøy" + }, + "custom": { + "headerBtn": "Legg til / Rediger konfigurasjon", + "headerBtnAlt": "Legg til / Rediger tilpassede verktøy", + "listAdd": "Legg til MCP-server", + "titleAdd": "Legg til MCP-server", + "titleEdit": "Rediger {{tool}} MCP", + "titleEditJson": "MCP-verktøyinnstillinger" + } + }, + "modelConfig": { + "title": "Modellinnstillinger", + "customInstructions": "Tilpasset ledetekst", + "customInstructionsPlaceholder": "Skriv inn tilpasset systemledetekst...", + "customInstructionsDescription": "Disse ledetekstene vil bli lagt til på slutten av hver forespørsels systemledetekst", + "saveInstructions": "Lagre instruksjoner", + "customRulesSaved": "Tilpassede instruksjoner lagret", + "customRulesFailed": "Mislyktes å lagre tilpassede instruksjoner", + "modelDescription": "Modellnavn å bruke", + "modelDescriptionHint": "Modellnavn å bruke (Vennligst skriv inn API-nøkkel først for å se tilgjengelige modeller)" + }, + "common": { + "close": "Lukk", + "confirm": "Bekreft", + "cancel": "Avbryt", + "copy": "Kopier", + "copySuccess": "Kopiert", + "zoomInImage": "Zoom inn bilde", + "copyImage": "Kopier bilde", + "copyImageUrl": "Kopier bilde-URL", + "downloadImage": "Last ned bilde", + "login": "Logg inn", + "signup": "Registrer deg", + "save": "Lagre", + "signout": "Logg ut" + }, + "models": { + "title": "Modellinnstillinger", + "newProvider": "+ Legg til leverandør", + "parameters": "Parameterinnstillinger", + "instructionsSetting": "Instruksjonsinnstillinger", + "listTitle": "Konfigurer modellleverandør", + "optional": "(Valgfritt)", + "selfOptional": "(Valgfritt)", + "unSupportModelCount": "Du har valgt {{count}} ikke-støttede modeller", + "deleteTitle": "Bekreft sletting av {{name}}-nøkkel?", + "deleteDescription": "Denne handlingen kan ikke angres.", + "deleteAllTitle": "Bekreft modellsletting?", + "deleteAllDescription": "Etter sletting vil ingen modeller være tilgjengelige for samtale", + "deleteToast": "{{name}}-nøkkel slettet", + "deleteFailed": "Mislyktes å slette leverandørautentisering", + "providerMenu1": "Rediger leverandør", + "providerMenu2": "Administrer modell", + "providerMenu3": "Slett", + "verifying": "Verifiserer API-nøkkel og modell...", + "verifyingAbort": "Verifisering avbrutt, prøv igjen senere", + "apiKeyError": "Ugyldig API-nøkkel, vennligst sjekk og skriv inn API-nøkkelen din på nytt.", + "closeAllTitle": "Bekreft deaktivering?", + "closeAllDescription": "Etter deaktivering vil ingen modeller være tilgjengelige for samtale", + "noModelAlertTitle": "Ingen modeller tilgjengelige!", + "noModelAlertDescription": "Alle valgte modeller støttes ikke, samtale er ikke mulig", + "selectModelPlaceHolder": "Velg modell...", + "noModelAlertOption": "Ingen tilgjengelige modeller", + "popupTitle": "Tilgjengelige modeller", + "searchPlaceholder": "Søk modeller...", + "noResult": "Ingen tilgjengelige modeller", + "reloadModelList": "Last på nytt", + "modelSaved": "Modeller lagret", + "modelSaveFailed": "Mislyktes å lagre modeller", + "parameterSaved": "Parametere lagret", + "parameterSaveFailed": "Mislyktes å lagre parametere", + "ignored": "Hopp over verifisering for denne modellen", + "unSupportModel": "Modell støttes ikke", + "unToolCallsSupport": "Verktøyanrop støttes ikke", + "verify": "Verifiser", + "verifyIgnore": "Ignorer", + "verifyIgnoreAlt": "Verifiseringspåminnelse vil ikke lenger vises", + "verifyNextTime": "Senere", + "verifyNextTimeAlt": "Vil spørre om verifisering neste gang", + "verifyTitle": "! {{count}} uverifiserte modeller oppdaget", + "verifyDesc": "Følgende modeller er ikke verifisert. Vil du verifisere dem?", + "progressVerifying": "Modellverifisering pågår, vennligst vent...", + "verifyMenu": { + "advanced": "Avanserte innstillinger", + "verify": "Verifiser modell", + "ignore": "Ignorer verifisering", + "delete": "Slett modell" + }, + "customModelID": { + "add": "+ Tilpasset modell-ID", + "title": "Tilpasset modell-ID", + "placeholder": "Skriv inn tilpasset modell-ID...", + "Error": { + "empty": "Tilpasset modell-ID kan ikke være tom", + "exist": "Tilpasset modell-ID eksisterer allerede" + } + }, + "copyContent": "Kopier innhold", + "editProviderTitle": "Rediger {{provider}}-konfigurasjon", + "hide": "Skjul", + "display": "Vis", + "copy": "Kopier", + "modelSetting": "Avanserte innstillinger", + "streamingModeTooltip": "Strømmingsmodus er når modellen svarer, den viser innholdet gradvis, i stedet for å vise alt på en gang. Å slå av knappen i ikke-strømmingsmodus vil vente på at modellen genererer innholdet helt og vise alt på en gang, unngå kompatibilitetsproblemer med verktøyanrop i modellen.", + "streamingModeDescription": "Kontroller hvordan modellsvar vises", + "streamingModeAlert": "Påminnelse: Noen modeller støtter bare verktøyanrop i enten strømmingsmodus eller ikke-strømmingsmodus. Det anbefales å fullt ut forstå dine behov før du justerer denne parameteren.", + "customInput": "Tilpasset inndata", + "addCustomParameter": "Legg til tilpasset parameter", + "parameterName": "Parameternavn", + "parameterType": "Parametertype", + "parameterValue": "Parameterverdi", + "parameterNameDescription": "Skriv inn navn, som temperatur", + "parameterTypeDescription": "Velg type", + "parameterValueDescription": "Vennligst velg parametertype først og skriv deretter inn verdien", + "parameterNameDuplicate": "Parameternavn eksisterer allerede", + "parameterTypeInt": "Heltall", + "parameterTypeFloat": "Flyttall", + "parameterTypeString": "Streng", + "parameterTypeIntDescription": "Tillatt område 0-1M", + "parameterTypeFloatDescription": "Tillatt område 0.0-1.0", + "parameterTypeStringDescription": "Vennligst skriv inn en streng, som medium", + "reasoningLevelDescription": "Sett modellens tenkedybde", + "reasoningLevelTooltip": "Lav representerer et raskt svar, fokuserer på konklusjoner og uten ytterligere detaljer, med direkte og enkel resonnering. Middels gir et svar med tilstrekkelig logisk forklaring, som dekker nøkkelinformasjon. Høy tilbyr et dypt svar med strukturert og detaljert analyse og forklaring.", + "tokenBudgetDescription": "Sett resonnementverdi ({{min}}~{{max}})", + "parameterVerify": "Parameterverifisering", + "verifyErrorInfo": "Verifiseringsfeildetaljer", + "verifyErrorMsg": "Modellen brukte ingen verktøy under verifisering, noe som kan skyldes mangel på støtte eller at den ikke ble utløst. Derfor er det ikke mulig å bekrefte om den støtter verktøy.", + "verifyStatusSuccess": "Modellverifisering vellykket, aktivert med original konfigurasjon", + "verifyStatusSuccessInPrompt": "Modellverifisering vellykket, aktivert med MCP Prompts", + "verifyUnexpectedFailed": "Modellverifisering mislyktes, en ukjent feil oppstod, prøv igjen senere", + "oapUsageLimit": "Bruksgrense nådd, midlertidig utilgjengelig" + }, + "system": { + "title": "Systeminnstillinger", + "language": "Systemspråk", + "languageDefault": "Systemstandard", + "languageDescription": "Språk som brukes til å vise systemgrensesnittet. Språket som brukes i modellen kan endres på modellinnstillingssiden, dette refererer til språket som vises i Dive-grensesnittet", + "theme": "Mørk modus", + "themeDescription": "Bytt mellom systemstandard og mørk modus", + "defaultInstructions": "speak in Norwegian", + "autoDownload": "Automatisk nedlasting av oppdatering", + "autoDownloadDescription": "Last automatisk ned den nye versjonen av DIVE når brukeren starter på nytt eller klikker på \"Oppgrader\"-knappen på menysiden, den nye versjonen vil bli aktivert", + "autoLaunch": "Automatisk oppstart", + "autoLaunchDescription": "Start Dive AI automatisk når systemet starter", + "minimalToTray": "Minimer til systemstatusfeltet", + "minimalToTrayDescription": "Når vinduet lukkes, vil programmet minimeres til systemstatusfeltet i stedet for å avsluttes helt", + "loginTitle": "OAP-pålogging", + "loginDescription": "Bruk OpenAgentPlatform for å logge inn, ingen teknisk bakgrunn kreves for enkelt å koble til LLM, AI-agenter og MCP-servere — Opplev smarte løsninger nå!", + "personalInformationTitle": "Personlig informasjon", + "defaultSystemPrompt": "Dive standard systemledetekst", + "defaultSystemPromptDescription": "Dive standard systemledetekst brukes som standard systemledetekst for chat. Den forteller LLM at Dive chat støtter KaTeX / Markdown / Mermaid osv. Denne funksjonen forbruker visse tokens, noe som kan gjøre svaret langsommere enn ledeteksten uten systemledetekst. På den annen side, hvis den er deaktivert, kan kvaliteten på LLMs svar reduseres", + "usageAnalytics": "Gå til Dashboard-siden i OAP Hub for å se", + "usageAnalyticsTitle": "Bruksanalyse", + "userEdit": "Gå til Konto-siden i OAP Hub for å gjøre endringer", + "planSectionTitle": "Gjeldende planbruk", + "subscriptionDate": "Abonnementsdato", + "remainingUsage": "Gjenværende bruk", + "usageWarningTitle": "Token-bruksgrense nådd.", + "usageWarning": "Pro-plankvote tilbakestilles neste måned, eller kjøp token-pakker for mer bruk. Grunnmodeller og MCP er fortsatt tilgjengelige.", + "BaseSubscriptionDate": "Utløper aldri", + "BaseRemainingUsage": "Ingen grense", + "BaseUsageWarning": "Basisplanen inkluderer tilgang til grunnmodeller og grunnleggende MCP. For å bruke andre modeller og MCP, oppgrader planen din fra Plan-siden.", + "customPromptDescription": "Hvis du trenger ytterligere tilpassede instruksjoner, klikk på \"Tilpasset ledetekst\"-funksjonen nedenfor for å sette det opp.", + "customPromptButton": "Tilpasset ledetekst", + "tokenPackageTitle": "Token-pakkebruk", + "tokenPackageHint": "Token-pakker har ingen utløpsdato og vil bare bli brukt etter at månedlig plankvote er uttømt.", + "tokenPackageRemainingUsage": "Gjenværende bruk", + "tokenPackageWarningTitle": "Token-kvote brukt opp.", + "tokenPackageWarning": "Du kan fylle på mer token-bruk på OAPhub Dashboard-siden.", + "skipTlsVerifyWarning": "Sikkerhetsadvarsel: Å ignorere sertifikatverifisering kan redusere tilkoblingssikkerheten. Det anbefales å bruke i pålitelige nettverksmiljøer." + }, + "toast": { + "copiedToClipboard": "Kopiert til utklippstavle", + "copyFailed": "Kopiering mislyktes", + "copiedImage": "Bilde kopiert", + "downloadedImage": "Bilde lastet ned" + }, + "keymap": { + "title": "Tastatursnarveier", + "events": { + "chat-input_submit": "Send melding", + "chat-input_upload-file": "Last opp fil", + "chat-input_focus": "Fokuser inndata", + "chat-input_paste-last-message": "Lim inn siste melding", + "chat-message_copy-last": "Kopier siste melding", + "chat_delete": "Slett chat", + "global_new-chat": "Ny chat", + "global_toggle-sidebar": "Bytt sidefelt", + "global_close-layer": "Lukk vindu", + "global_toggle-keymap-modal": "Bytt tastatursnarveihjel p" + } + }, + "update": { + "downloading": "Laster ned...", + "readyToInstall": "Klar til å installere", + "clickToInstall": "Klikk for å installere oppdatering" + }, + "login": { + "subtitle": "Dive AI er en åpen kildekode desktop-applikasjon som sømløst integrerer forskjellige store språkmodeller som støtter funksjonsanrop. Gjennom sitt rene og intuitive grensesnitt kan du enkelt samtale med banebrytende AI, fra daglige spørsmål til profesjonelle oppgaver, få presise svar og gjøre det til din intelligente assistent.", + "title1": "Bruk dine egne forberedte modeller", + "description1": "Egnet for avanserte AI-eksperter. Hvis du allerede har din egen konfigurasjon klar, enten det er lokal Ollama, llama.cpp eller eksterne LLM-API-er fra Openrouter, OpenAI, Anthropic eller andre AI-selskaper, bruk dette alternativet.", + "button1": "Gå til modellinnstillinger", + "title2": "Bruk OpenAgentPlatform", + "description2": "OAP gjør det enkelt for alle å bruke de mest avanserte AI-tjenestene, koble til LLM, AI-agenter og MCP-servere uten å kreve teknisk ekspertise. Utforsk de ubegrensede mulighetene til AI og opplev smarte løsninger nå.", + "button2": "Registrer deg for OAP", + "button3": "Logg inn på OAP" + }, + "InstallHostDependencies": { + "title": "Laster ned vertsavhengigheter...", + "retry": "Prøv igjen", + "stop": "Stopp", + "tip": "Hvis en feil oppstår under nedlasting, lukk dette vinduet først og start applikasjonen på nytt for å laste ned på nytt." + }, + "deeplink": { + "mcpInstallConfirm": "Legg til stdio MCP-tjeneste - Du vil legge til MCP via følgende kommando, vennligst bekreft:" + } +} + diff --git a/src/locales/pl/translation.json b/src/locales/pl/translation.json new file mode 100644 index 00000000..839a1b4a --- /dev/null +++ b/src/locales/pl/translation.json @@ -0,0 +1,442 @@ +{ + "header": { + "title": "Dive AI", + "openSidebar": "Otwórz pasek boczny", + "closeSidebar": "Zamknij pasek boczny" + }, + "chat": { + "placeholder": "Wyślij wiadomość...", + "newChat": "Nowy czat", + "newChatTooltip": "Rozpocznij nową konwersację", + "history": "Historia", + "copyCode": "Kopiuj", + "previewCode": "Kliknij, aby zobaczyć podgląd", + "uploadFile": "Prześlij plik", + "send": "Wyślij", + "untitledChat": "Czat bez tytułu", + "deleteChat": "Usuń czat", + "deleteSuccess": "Czat usunięty", + "deleteFailed": "Usunięcie nie powiodło się", + "confirmDelete": "Potwierdź usunięcie", + "confirmDeleteDescription": "Po usunięciu czat nie może zostać odzyskany.", + "tools": { + "button": "Narzędzia", + "enabledHint": "Włączono {{enabled}} narzędzi", + "failedHint": "Włączono {{enabled}} narzędzi, {{failed}} narzędzi nie powiodło się" + }, + "abort": "Zatrzymaj generowanie", + "retry": "Spróbuj ponownie", + "noModelAlert": "Brak dostępnych modeli", + "noModelBanner": "Brak dostępnych modeli, najpierw wybierz model", + "onLimit": "Osiągnięto limit użycia planu {{plan}}, modele oap nie mogą być używane", + "modelSettings": "Ustawienia modelu", + "copy": "Kopiuj", + "copied": "Skopiowano", + "edit": "Edytuj", + "editDescription": "Edycja tej wiadomości wygeneruje nową odpowiedź", + "cancel": "Anuluj", + "save": "Zapisz", + "toolCalls": "🛠 Wynik wywołania narzędzia {{name}}", + "unsupportTools": "{{model}} nie obsługuje wywołań narzędzi", + "dragFiles": "Upuść pliki tutaj, aby dodać do czatu", + "tools-btn": { + "disableToast": "Wywołania narzędzi wyłączone", + "disable": "Wyłącz wywołania narzędzi", + "enableToast": "Wywołania narzędzi włączone", + "enable": "Włącz wywołania narzędzi" + } + }, + "welcome": { + "title": "Witaj w Dive AI", + "subtitle": "Rozpocznij swoją konwersację z AI", + "startChat": "Rozpocznij czat" + }, + "setup": { + "title": "Konfiguracja początkowa", + "subtitle": "Proszę skonfigurować ustawienia modelu", + "required": "To pole jest wymagane", + "submit": "Zapisz ustawienia", + "provider": "Dostawca modelu", + "verify": "Zweryfikuj model", + "verifying": "Weryfikacja...", + "verifySuccess": "Weryfikacja modelu zakończona sukcesem", + "verifySuccessNoTool": "Weryfikacja modelu zakończona sukcesem, ale nie obsługuje wywołań narzędzi", + "verifyFailed": "Weryfikacja modelu nie powiodła się", + "verifyError": "Wystąpił błąd podczas weryfikacji", + "saveSuccess": "Ustawienia zapisane pomyślnie", + "saveFailed": "Zapisywanie ustawień nie powiodło się", + "back": "Wstecz", + "parameters": "Parametry", + "topPDescription": "Parametr Top-P kontroluje zakres wyboru słów. Wartość 0 używa wartości domyślnej; niższe wartości wybierają tylko słowa o wysokim prawdopodobieństwie, co daje konserwatywne odpowiedzi; wyższe wartości poszerzają zakres słownictwa, prowadząc do bardziej zróżnicowanych odpowiedzi.", + "temperatureDescription": "Parametr temperatury kontroluje losowość odpowiedzi. Wartość 0 używa wartości domyślnej; niższe wartości dają bardziej precyzyjne i stabilne odpowiedzi; wyższe wartości generują bardziej kreatywne, ale mniej rygorystyczne odpowiedzi." + }, + "sidebar": { + "tools": "Zarządzanie narzędziami (MCP)", + "settings": "Ustawienia modelu", + "update": "Dostępna aktualizacja", + "models": "Ustawienia modelu", + "system": "Ustawienia systemu", + "manageAndSettings": "Zarządzanie i ustawienia", + "OAPhub": "OAPhub", + "signOut": "Wyloguj się", + "chat": { + "starredChat": "Ulubione", + "starChat": "Dodaj do ulubionych", + "unStarChat": "Usuń z ulubionych", + "starFailed": "Dodanie do ulubionych nie powiodło się", + "renameChat": "Zmień nazwę", + "renameFailed": "Zmiana nazwy nie powiodła się", + "deleteChat": "Usuń" + } + }, + "setting": { + "tabs": { + "Tools": "Zarządzanie narzędziami MCP", + "Model": "Dostawca modelu", + "Account": "Konto", + "System": "Ustawienia systemu" + } + }, + "tools": { + "title": "Zarządzanie narzędziami (MCP)", + "editConfig": "Edytuj konfigurację", + "editConfigAlt": "Edytuj konfigurację serwera MCP", + "configTitle": "Konfiguracja serwera MCP", + "save": "Zapisz", + "cancel": "Anuluj", + "saveSuccess": "Ustawienia zapisane pomyślnie", + "saveFailed": "Zapisywanie ustawień nie powiodło się", + "toggleFailed": "Wystąpił błąd", + "reloadFailed": "{{toolName}} wystąpił błąd, ponowne ładowanie nie powiodło się", + "reloadAllFailed": "{{number}} wywołań narzędzi wystąpił błąd, ponowne ładowanie nie powiodło się", + "openConfigFolder": "Folder konfiguracji", + "openConfigFolderAlt": "Otwórz folder konfiguracji", + "fetchFailed": "Ładowanie narzędzi nie powiodło się", + "configFetchFailed": "Ładowanie konfiguracji nie powiodło się", + "configSaveAborted": "Zapisywanie konfiguracji przerwane", + "invalidJson": "Nieprawidłowy format JSON", + "updateFailed": "{{serverName}} ładowanie nie powiodło się: {{error}}", + "installFailed": "Instalacja nie powiodła się", + "startFailed": "Uruchomienie nie powiodło się", + "toolMenu": { + "delete": "Usuń", + "edit": "Edytuj", + "reload": "Przeładuj", + "detail": "Zobacz szczegóły" + }, + "delete": "Usuń", + "jsonCopy": "Kopiuj", + "jsonCopied": "Skopiowano", + "jsonDownload": "Pobierz", + "deleteTitle": "Potwierdź usunięcie narzędzia {{mcp}}?", + "deleteAllTitle": "Potwierdź usunięcie wszystkich narzędzi?", + "fieldTitle": "Pole", + "fieldTitleAlt": "Pola zazwyczaj spełniają większość potrzeb, ale jeśli twoje ustawienia MCP wymagają dodatkowych pól lub różnych typów, możesz bezpośrednio edytować w obszarze tekstowym JSON po prawej stronie, aby spełnić wymagania twojego programu", + "initialTimeoutAlt": "Początkowy czas oczekiwania na połączenie jest domyślnie ustawiony na 10 sekund, ale może być ustawiony na dowolną liczbę zmiennoprzecinkową wynoszącą 10 sekund lub więcej. Nie ma limitu liczby sekund. Zaleca się dostosowanie tej wartości, jeśli serwer ma wolne połączenie.", + "initialTimeoutPlaceholder": "Wprowadź początkowy limit czasu...", + "initialTimeoutError": "Proszę wprowadzić liczbę większą lub równą 10", + "jsonDesc": "Proszę wprowadzić lub wkleić JSON serwera MCP w polu", + "addArg": "Dodaj argument", + "addEnv": "Dodaj zmienną środowiskową", + "jsonFormatError": { + "addFormat": "Błąd formatu konfiguracji, proszę sprawdzić i poprawić format", + "format": "Błąd formatu konfiguracji {{mcp}}, proszę sprawdzić i poprawić format", + "nameEmpty": "Nazwa nie może być pusta, proszę wprowadzić prawidłową nazwę", + "nameExist": "Konfiguracja o nazwie \"{{mcp}}\" już istnieje", + "stringError": "Narzędzie {{mcp}}: Pole {{field}} musi być ciągiem znaków", + "numberError": "Narzędzie {{mcp}}: Pole {{field}} musi być liczbą", + "floatError": "Narzędzie {{mcp}}: Pole {{field}} musi być liczbą zmiennoprzecinkową", + "booleanError": "Narzędzie {{mcp}}: Pole {{field}} musi być ustawione na true lub false", + "arrayError": "Narzędzie {{mcp}}: Pole {{field}} musi być dostarczone jako tablica", + "objectError": "Narzędzie {{mcp}}: Pole {{field}} musi być dostarczone jako obiekt", + "optionError": "Narzędzie {{mcp}}: Pole {{field}} może być tylko {{options}}", + "requiredError": "Narzędzie {{mcp}}: Pole {{field}} jest wymagane", + "jsonError": "Narzędzie {{mcp}}: Błąd formatu JSON, proszę sprawdzić i poprawić format", + "toolNumberError": "W trybie edycji można ustawić tylko jedno narzędzie, proszę usunąć inne elementy nie będące narzędziami", + "enabled": "Narzędzie {{mcp}}: Pole enabled musi być ustawione na true lub false", + "command": "Narzędzie {{mcp}}: Pole command musi być ciągiem znaków", + "args": "Narzędzie {{mcp}}: Pole args musi być dostarczone jako tablica", + "env": "Narzędzie {{mcp}}: Pole env musi być dostarczone jako obiekt", + "url": "Narzędzie {{mcp}}: Pole url musi być ciągiem znaków", + "transport": "Narzędzie {{mcp}}: Pole transport może być tylko {{options}}", + "initialTimeout": "Narzędzie {{mcp}}: Pole initialTimeout musi być liczbą zmiennoprzecinkową", + "range": "Narzędzie {{mcp}}: Wartość pola {{field}} jest poza zakresem, proszę sprawdzić i poprawić wartość", + "minRange": "Narzędzie {{mcp}}: Pole {{field}} musi być większe lub równe {{value}}", + "maxRange": "Narzędzie {{mcp}}: Pole {{field}} musi być mniejsze lub równe {{value}}" + }, + "namePlaceholder": "Wprowadź nazwę...", + "commandPlaceholder": "Wprowadź polecenie...", + "argsPlaceholder": "Wprowadź argumenty...", + "envKey": "Wprowadź nazwę zmiennej (Klucz)...", + "envValue": "Wprowadź wartość zmiennej (Wartość)...", + "inputKeyError": "Duplikat nazwy zmiennej {{ name }}", + "urlPlaceholder": "Wprowadź URL...", + "transportPlaceholder": "Wybierz transport...", + "providerSearchPlaceholder": "Wprowadź wyszukiwanie dostawcy...", + "noProviderSearchResult": "Nie znaleziono powiązanego dostawcy", + "toogleToolAlt": "Włącz narzędzia MCP", + "logTitle": "Wykonaj polecenie UVX", + "logProcessing": "Przetwarzanie...", + "no_tool_title": "Brak dostępnych serwerów MCP", + "no_oap_tool_message": { + "all": "Proszę wybrać serwer MCP OAP do użycia lub dodać niestandardowy serwer MCP.", + "oap": "Proszę wybrać serwer MCP OAP do użycia.", + "custom": "Proszę dodać niestandardowy serwer MCP." + }, + "no_tool_message": "Proszę dodać serwer MCP.", + "tab": { + "all": "Wszystkie narzędzia", + "oap": "Narzędzia OAP", + "custom": "Narzędzia niestandardowe" + }, + "oapStoreLinkAlt": "Zobacz szczegóły", + "subToolsCount": "Włączone narzędzia: {{count}} / {{total}}", + "disabledDescription": "Wyłączone", + "unsaved": { + "title": "Niezapisane zmiany", + "desc": "Masz niezapisane zmiany. Jeśli opuścisz tę stronę, zmiany zostaną utracone. Czy chcesz kontynuować?", + "cancel": "Anuluj zmiany", + "save": "Zapisz" + }, + "oauthAlert": "Proszę potwierdzić, że ufasz temu łącznikowi: ten łącznik nie został zweryfikowany przez Dive. Jesteś odpowiedzialny za wszystkie operacje wykonywane za pomocą Dive.", + "reload": { + "headerBtn": "Przeładuj", + "headerBtnAlt": "Przeładuj i zaktualizuj narzędzia MCP" + }, + "oap": { + "type": { + "all": "Wszystkie narzędzia", + "base": "Pokaż tylko Base", + "pro": "Pokaż tylko Pro" + }, + "sort": { + "title": "Sortuj", + "popular": "Popularne", + "new": "Nowe" + }, + "tag": "Tag", + "no_search_data_title": "Nie znaleziono narzędzi MCP", + "no_search_data": "Nie znaleziono wyników wyszukiwania, proszę wyczyścić słowo kluczowe wyszukiwania lub dostosować warunki filtrowania.", + "clear_filter": "Wyczyść filtr", + "hint": "Serwery MCP wysokiego poziomu wymagają uaktualnienia do wersji Pro w celu instalacji", + "high_cost_title": "Włącz serwery MCP o wysokich kosztach", + "high_cost_desc": "Wybrano serwery MCP, które zużywają wiele tokenów. Proszę sprawdzić, czy użycie planu jest wystarczające.", + "headerBtnAlt": "Dodaj / Zobacz narzędzia MCP OAP" + }, + "custom": { + "headerBtn": "Dodaj / Edytuj konfigurację", + "headerBtnAlt": "Dodaj / Edytuj narzędzia niestandardowe", + "listAdd": "Dodaj serwer MCP", + "titleAdd": "Dodaj serwer MCP", + "titleEdit": "Edytuj {{tool}} MCP", + "titleEditJson": "Ustawienia narzędzi MCP" + } + }, + "modelConfig": { + "title": "Ustawienia modelu", + "customInstructions": "Niestandardowy prompt", + "customInstructionsPlaceholder": "Wprowadź niestandardowy prompt systemowy...", + "customInstructionsDescription": "Te prompty zostaną dodane na końcu każdego prompta systemowego żądania", + "saveInstructions": "Zapisz instrukcje", + "customRulesSaved": "Niestandardowe instrukcje zapisane", + "customRulesFailed": "Zapisywanie niestandardowych instrukcji nie powiodło się", + "modelDescription": "Nazwa modelu do użycia", + "modelDescriptionHint": "Nazwa modelu do użycia (Proszę najpierw wprowadzić klucz API, aby zobaczyć dostępne modele)" + }, + "common": { + "close": "Zamknij", + "confirm": "Potwierdź", + "cancel": "Anuluj", + "copy": "Kopiuj", + "copySuccess": "Skopiowano", + "zoomInImage": "Powiększ obraz", + "copyImage": "Kopiuj obraz", + "copyImageUrl": "Kopiuj URL obrazu", + "downloadImage": "Pobierz obraz", + "login": "Zaloguj się", + "signup": "Zarejestruj się", + "save": "Zapisz", + "signout": "Wyloguj się" + }, + "models": { + "title": "Ustawienia modelu", + "newProvider": "+ Dodaj dostawcę", + "parameters": "Ustawienia parametrów", + "instructionsSetting": "Ustawienia instrukcji", + "listTitle": "Skonfiguruj dostawcę modelu", + "optional": "(Opcjonalne)", + "selfOptional": "(Opcjonalne)", + "unSupportModelCount": "Wybrano {{count}} nieobsługiwanych modeli", + "deleteTitle": "Potwierdź usunięcie klucza {{name}}?", + "deleteDescription": "Ta akcja nie może być cofnięta.", + "deleteAllTitle": "Potwierdź usunięcie modelu?", + "deleteAllDescription": "Po usunięciu żadne modele nie będą dostępne do konwersacji", + "deleteToast": "Usunięto klucz {{name}}", + "deleteFailed": "Usunięcie uwierzytelnienia dostawcy nie powiodło się", + "providerMenu1": "Edytuj dostawcę", + "providerMenu2": "Zarządzaj modelem", + "providerMenu3": "Usuń", + "verifying": "Weryfikacja klucza API i modelu...", + "verifyingAbort": "Weryfikacja przerwana, proszę spróbować ponownie później", + "apiKeyError": "Nieprawidłowy klucz API, proszę sprawdzić i ponownie wprowadzić klucz API.", + "closeAllTitle": "Potwierdź dezaktywację?", + "closeAllDescription": "Po dezaktywacji żadne modele nie będą dostępne do konwersacji", + "noModelAlertTitle": "Brak dostępnych modeli!", + "noModelAlertDescription": "Wszystkie wybrane modele nie są obsługiwane, konwersacja nie jest możliwa", + "selectModelPlaceHolder": "Wybierz model...", + "noModelAlertOption": "Brak dostępnych modeli", + "popupTitle": "Dostępne modele", + "searchPlaceholder": "Szukaj modeli...", + "noResult": "Brak dostępnych modeli", + "reloadModelList": "Przeładuj", + "modelSaved": "Modele zapisane", + "modelSaveFailed": "Zapisywanie modeli nie powiodło się", + "parameterSaved": "Parametry zapisane", + "parameterSaveFailed": "Zapisywanie parametrów nie powiodło się", + "ignored": "Pomiń weryfikację dla tego modelu", + "unSupportModel": "Model nieobsługiwany", + "unToolCallsSupport": "Wywołania narzędzi nieobsługiwane", + "verify": "Zweryfikuj", + "verifyIgnore": "Ignoruj", + "verifyIgnoreAlt": "Przypomnienie o weryfikacji nie będzie już wyświetlane", + "verifyNextTime": "Później", + "verifyNextTimeAlt": "Zapyta o weryfikację następnym razem", + "verifyTitle": "! Wykryto {{count}} niezweryfikowanych modeli", + "verifyDesc": "Następujące modele nie są zweryfikowane. Czy chcesz je zweryfikować?", + "progressVerifying": "Weryfikacja modelu w toku, proszę czekać...", + "verifyMenu": { + "advanced": "Ustawienia zaawansowane", + "verify": "Zweryfikuj model", + "ignore": "Ignoruj weryfikację", + "delete": "Usuń model" + }, + "customModelID": { + "add": "+ Niestandardowy identyfikator modelu", + "title": "Niestandardowy identyfikator modelu", + "placeholder": "Wprowadź niestandardowy identyfikator modelu...", + "Error": { + "empty": "Niestandardowy identyfikator modelu nie może być pusty", + "exist": "Niestandardowy identyfikator modelu już istnieje" + } + }, + "copyContent": "Kopiuj zawartość", + "editProviderTitle": "Edytuj konfigurację {{provider}}", + "hide": "Ukryj", + "display": "Wyświetl", + "copy": "Kopiuj", + "modelSetting": "Ustawienia zaawansowane", + "streamingModeTooltip": "Tryb strumieniowania to gdy model odpowiada, pokazuje treść stopniowo, zamiast pokazywać ją naraz. Wyłączenie przycisku w trybie niestrumieniowym spowoduje, że poczekamy, aż model wygeneruje treść całkowicie i wyświetli ją naraz, unikając problemów z kompatybilnością wywołań narzędzi w modelu.", + "streamingModeDescription": "Kontroluj sposób wyświetlania odpowiedzi modelu", + "streamingModeAlert": "Przypomnienie: Niektóre modele obsługują wywołania narzędzi tylko w trybie strumieniowym lub niestrumieniowym. Zaleca się pełne zrozumienie potrzeb przed dostosowaniem tego parametru.", + "customInput": "Niestandardowe wprowadzanie", + "addCustomParameter": "Dodaj niestandardowy parametr", + "parameterName": "Nazwa parametru", + "parameterType": "Typ parametru", + "parameterValue": "Wartość parametru", + "parameterNameDescription": "Wprowadź nazwę, np. temperatura", + "parameterTypeDescription": "Wybierz typ", + "parameterValueDescription": "Proszę najpierw wybrać typ parametru, a następnie wprowadzić wartość", + "parameterNameDuplicate": "Nazwa parametru już istnieje", + "parameterTypeInt": "Liczba całkowita", + "parameterTypeFloat": "Liczba zmiennoprzecinkowa", + "parameterTypeString": "Ciąg znaków", + "parameterTypeIntDescription": "Dozwolony zakres 0-1M", + "parameterTypeFloatDescription": "Dozwolony zakres 0.0-1.0", + "parameterTypeStringDescription": "Proszę wprowadzić ciąg znaków, np. medium", + "reasoningLevelDescription": "Ustaw głębokość myślenia modelu", + "reasoningLevelTooltip": "Niski reprezentuje szybką odpowiedź, koncentrującą się na wnioskach i bez dodatkowych szczegółów, z bezpośrednim i prostym rozumowaniem. Średni zapewnia odpowiedź z wystarczającym logicznym wyjaśnieniem, obejmującym kluczowe informacje. Wysoki oferuje głęboką odpowiedź ze strukturalną i szczegółową analizą i wyjaśnieniem.", + "tokenBudgetDescription": "Ustaw wartość rozumowania ({{min}}~{{max}})", + "parameterVerify": "Weryfikacja parametrów", + "verifyErrorInfo": "Szczegóły błędu weryfikacji", + "verifyErrorMsg": "Model nie użył żadnych narzędzi podczas weryfikacji, co może wynikać z braku wsparcia lub niewyzwolenia. Dlatego nie można potwierdzić, czy obsługuje narzędzia.", + "verifyStatusSuccess": "Weryfikacja modelu zakończona sukcesem, włączono z oryginalną konfiguracją", + "verifyStatusSuccessInPrompt": "Weryfikacja modelu zakończona sukcesem, włączono z MCP Prompts", + "verifyUnexpectedFailed": "Weryfikacja modelu nie powiodła się, wystąpił nieznany błąd, proszę spróbować ponownie później", + "oapUsageLimit": "Osiągnięto limit użycia, tymczasowo niedostępne" + }, + "system": { + "title": "Ustawienia systemu", + "language": "Język systemu", + "languageDefault": "Domyślny systemu", + "languageDescription": "Język używany do wyświetlania interfejsu systemu. Język używany w modelu można zmienić na stronie ustawień modelu, to odnosi się do języka wyświetlanego w interfejsie Dive", + "theme": "Tryb ciemny", + "themeDescription": "Przełączanie między domyślnym systemem a trybem ciemnym", + "defaultInstructions": "speak in Polish", + "autoDownload": "Automatyczne pobieranie aktualizacji", + "autoDownloadDescription": "Automatycznie pobierz nową wersję DIVE, gdy użytkownik uruchomi ponownie lub kliknie przycisk \"Aktualizuj\" na stronie menu, nowa wersja zostanie włączona", + "autoLaunch": "Automatyczne uruchamianie", + "autoLaunchDescription": "Automatycznie uruchom Dive AI przy starcie systemu", + "minimalToTray": "Minimalizuj do zasobnika", + "minimalToTrayDescription": "Przy zamykaniu okna program zostanie zminimalizowany do zasobnika systemowego zamiast całkowicie zakończyć", + "loginTitle": "Logowanie OAP", + "loginDescription": "Użyj OpenAgentPlatform do logowania, nie jest wymagane techniczne tło, aby łatwo łączyć LLM, agentów AI i serwery MCP — Doświadcz inteligentnych rozwiązań teraz!", + "personalInformationTitle": "Informacje osobiste", + "defaultSystemPrompt": "Domyślny prompt systemowy Dive", + "defaultSystemPromptDescription": "Domyślny prompt systemowy Dive jest używany jako domyślny prompt systemowy dla czatu. Informuje LLM, że czat Dive obsługuje KaTeX / Markdown / Mermaid itp. Ta funkcja zużywa pewne tokeny, co może sprawić, że odpowiedź będzie wolniejsza niż prompt bez promptu systemowego. Z drugiej strony, jeśli jest wyłączona, jakość odpowiedzi LLM może się obniżyć", + "usageAnalytics": "Przejdź do strony Dashboard w OAP Hub, aby zobaczyć", + "usageAnalyticsTitle": "Analiza użycia", + "userEdit": "Przejdź do strony Konto w OAP Hub, aby wprowadzić zmiany", + "planSectionTitle": "Użycie bieżącego planu", + "subscriptionDate": "Data subskrypcji", + "remainingUsage": "Pozostałe użycie", + "usageWarningTitle": "Osiągnięto limit użycia tokenów.", + "usageWarning": "Limit planu Pro zostanie zresetowany w następnym miesiącu lub kup pakiety tokenów, aby uzyskać więcej użycia. Modele podstawowe i MCP są nadal dostępne.", + "BaseSubscriptionDate": "Nigdy nie wygasa", + "BaseRemainingUsage": "Brak limitu", + "BaseUsageWarning": "Plan Base obejmuje dostęp do modeli podstawowych i podstawowych MCP. Aby użyć innych modeli i MCP, proszę uaktualnić plan ze strony planu.", + "customPromptDescription": "Jeśli potrzebujesz dodatkowych niestandardowych instrukcji, kliknij funkcję \"Niestandardowy prompt\" poniżej, aby ją skonfigurować.", + "customPromptButton": "Niestandardowy prompt", + "tokenPackageTitle": "Użycie pakietu tokenów", + "tokenPackageHint": "Pakiety tokenów nie mają daty wygaśnięcia i będą używane tylko po wyczerpaniu miesięcznego limitu planu.", + "tokenPackageRemainingUsage": "Pozostałe użycie", + "tokenPackageWarningTitle": "Limit tokenów wyczerpany.", + "tokenPackageWarning": "Możesz uzupełnić więcej użycia tokenów na stronie Dashboard OAPhub.", + "skipTlsVerifyWarning": "Ostrzeżenie bezpieczeństwa: Ignorowanie weryfikacji certyfikatu może zmniejszyć bezpieczeństwo połączenia. Zaleca się użycie w zaufanych środowiskach sieciowych." + }, + "toast": { + "copiedToClipboard": "Skopiowano do schowka", + "copyFailed": "Kopiowanie nie powiodło się", + "copiedImage": "Skopiowano obraz", + "downloadedImage": "Pobrano obraz" + }, + "keymap": { + "title": "Skróty klawiszowe", + "events": { + "chat-input_submit": "Wyślij wiadomość", + "chat-input_upload-file": "Prześlij plik", + "chat-input_focus": "Fokus na wprowadzanie", + "chat-input_paste-last-message": "Wklej ostatnią wiadomość", + "chat-message_copy-last": "Kopiuj ostatnią wiadomość", + "chat_delete": "Usuń czat", + "global_new-chat": "Nowy czat", + "global_toggle-sidebar": "Przełącz pasek boczny", + "global_close-layer": "Zamknij okno", + "global_toggle-keymap-modal": "Przełącz pomoc skrótów klawiszowych" + } + }, + "update": { + "downloading": "Pobieranie...", + "readyToInstall": "Gotowe do instalacji", + "clickToInstall": "Kliknij, aby zainstalować aktualizację" + }, + "login": { + "subtitle": "Dive AI to aplikacja desktopowa open-source, która bezproblemowo integruje różne duże modele językowe obsługujące wywołania funkcji. Dzięki czystemu i intuicyjnemu interfejsowi możesz łatwo rozmawiać z najnowocześniejszą AI, od codziennych pytań po zadania zawodowe, otrzymując precyzyjne odpowiedzi i czyniąc ją swoim inteligentnym asystentem.", + "title1": "Użyj własnych przygotowanych modeli", + "description1": "Odpowiednie dla zaawansowanych ekspertów AI. Jeśli masz już własną gotową konfigurację, czy to lokalne Ollama, llama.cpp, czy zdalne API LLM Openrouter, OpenAI, Anthropic lub innych firm AI, proszę użyć tej opcji.", + "button1": "Przejdź do ustawień modelu", + "title2": "Użyj OpenAgentPlatform", + "description2": "OAP ułatwia każdemu korzystanie z najnowocześniejszych usług AI, łącząc LLM, agentów AI i serwery MCP bez wymagania wiedzy technicznej. Odkryj nieograniczone możliwości AI i doświadcz inteligentnych rozwiązań teraz.", + "button2": "Zarejestruj się w OAP", + "button3": "Zaloguj się do OAP" + }, + "InstallHostDependencies": { + "title": "Pobieranie zależności hosta...", + "retry": "Spróbuj ponownie", + "stop": "Zatrzymaj", + "tip": "Jeśli wystąpi błąd podczas pobierania, proszę najpierw zamknąć to okno i ponownie uruchomić aplikację, aby ponownie pobrać." + }, + "deeplink": { + "mcpInstallConfirm": "Dodaj usługę MCP stdio - Dodasz MCP za pomocą następującego polecenia, proszę potwierdzić:" + } +} + diff --git a/src/locales/pt/translation.json b/src/locales/pt/translation.json new file mode 100644 index 00000000..3869ca9b --- /dev/null +++ b/src/locales/pt/translation.json @@ -0,0 +1,442 @@ +{ + "header": { + "title": "Dive AI", + "openSidebar": "Abrir barra lateral", + "closeSidebar": "Fechar barra lateral" + }, + "chat": { + "placeholder": "Enviar mensagem...", + "newChat": "Nova Conversa", + "newChatTooltip": "Iniciar uma nova conversa", + "history": "Histórico", + "copyCode": "Copiar", + "previewCode": "Clique para visualizar", + "uploadFile": "Enviar Arquivo", + "send": "Enviar", + "untitledChat": "Conversa Sem Título", + "deleteChat": "Excluir Conversa", + "deleteSuccess": "Conversa excluída", + "deleteFailed": "Falha ao excluir", + "confirmDelete": "Confirmar Exclusão", + "confirmDeleteDescription": "Uma vez excluída, a conversa não poderá ser recuperada.", + "tools": { + "button": "Ferramentas", + "enabledHint": "{{enabled}} ferramentas ativadas", + "failedHint": "{{enabled}} ferramentas ativadas, {{failed}} ferramentas falharam" + }, + "abort": "Parar Geração", + "retry": "Tentar Novamente", + "noModelAlert": "Nenhum modelo disponível", + "noModelBanner": "Nenhum modelo disponível, por favor selecione um modelo primeiro", + "onLimit": "Você atingiu o limite de uso do plano {{plan}}, os modelos oap não podem ser usados", + "modelSettings": "Configurações do Modelo", + "copy": "Copiar", + "copied": "Copiado", + "edit": "Editar", + "editDescription": "Editar esta mensagem gerará uma nova resposta", + "cancel": "Cancelar", + "save": "Salvar", + "toolCalls": "🛠 Resultado da Chamada da Ferramenta {{name}}", + "unsupportTools": "{{model}} não suporta Chamadas de Ferramentas", + "dragFiles": "Solte os arquivos aqui para adicionar ao chat", + "tools-btn": { + "disableToast": "Chamadas de Ferramentas desativadas", + "disable": "Desativar Chamadas de Ferramentas", + "enableToast": "Chamadas de Ferramentas ativadas", + "enable": "Ativar Chamadas de Ferramentas" + } + }, + "welcome": { + "title": "Bem-vindo ao Dive AI", + "subtitle": "Inicie sua conversa com IA", + "startChat": "Iniciar Conversa" + }, + "setup": { + "title": "Configuração Inicial", + "subtitle": "Por favor, configure as definições do modelo", + "required": "Este campo é obrigatório", + "submit": "Salvar Configurações", + "provider": "Provedor do Modelo", + "verify": "Verificar Modelo", + "verifying": "Verificando...", + "verifySuccess": "Verificação do modelo bem-sucedida", + "verifySuccessNoTool": "Verificação do modelo bem-sucedida, mas não suporta Chamadas de Ferramentas", + "verifyFailed": "Falha na verificação do modelo", + "verifyError": "Ocorreu um erro durante a verificação", + "saveSuccess": "Configurações salvas com sucesso", + "saveFailed": "Falha ao salvar as configurações", + "back": "Voltar", + "parameters": "Parâmetros", + "topPDescription": "O parâmetro Top-P controla o intervalo de seleção de palavras. Um valor de 0 usa o valor padrão; valores mais baixos selecionam apenas palavras de alta probabilidade, resultando em respostas conservadoras; valores mais altos ampliam o intervalo de vocabulário, levando a respostas mais variadas.", + "temperatureDescription": "O parâmetro de temperatura controla a aleatoriedade da resposta. Um valor de 0 usa o valor padrão; valores mais baixos produzem respostas mais precisas e estáveis; valores mais altos geram respostas mais criativas, mas menos rigorosas." + }, + "sidebar": { + "tools": "Gerenciamento de Ferramentas (MCP)", + "settings": "Configurações do Modelo", + "update": "Atualização disponível", + "models": "Configurações do Modelo", + "system": "Configurações do Sistema", + "manageAndSettings": "Gerenciamento e Configurações", + "OAPhub": "OAPhub", + "signOut": "Sair", + "chat": { + "starredChat": "Favoritos", + "starChat": "Favoritar", + "unStarChat": "Desfavoritar", + "starFailed": "Falha ao favoritar", + "renameChat": "Renomear", + "renameFailed": "Falha ao renomear", + "deleteChat": "Excluir" + } + }, + "setting": { + "tabs": { + "Tools": "Gerenciamento de Ferramentas MCP", + "Model": "Provedor do modelo", + "Account": "Conta", + "System": "Configurações do Sistema" + } + }, + "tools": { + "title": "Gerenciamento de Ferramentas (MCP)", + "editConfig": "Editar Configuração", + "editConfigAlt": "Editar Configuração do Servidor MCP", + "configTitle": "Configuração do Servidor MCP", + "save": "Salvar", + "cancel": "Cancelar", + "saveSuccess": "Configurações salvas com sucesso", + "saveFailed": "Falha ao salvar as configurações", + "toggleFailed": "Ocorreu um erro", + "reloadFailed": "{{toolName}} ocorreu um erro, falha ao recarregar", + "reloadAllFailed": "{{number}} chamadas de ferramentas ocorreram um erro, falha ao recarregar", + "openConfigFolder": "Pasta de Configuração", + "openConfigFolderAlt": "Abrir Pasta de Configuração", + "fetchFailed": "Falha ao carregar ferramentas", + "configFetchFailed": "Falha ao carregar a configuração", + "configSaveAborted": "Salvamento da configuração interrompido", + "invalidJson": "Formato JSON inválido", + "updateFailed": "{{serverName}} falhou ao carregar: {{error}}", + "installFailed": "Falha na instalação", + "startFailed": "Falha ao iniciar", + "toolMenu": { + "delete": "Excluir", + "edit": "Editar", + "reload": "Recarregar", + "detail": "Ver Detalhes" + }, + "delete": "Excluir", + "jsonCopy": "Copiar", + "jsonCopied": "Copiado", + "jsonDownload": "Baixar", + "deleteTitle": "Confirmar exclusão da ferramenta {{mcp}}?", + "deleteAllTitle": "Confirmar exclusão de todas as ferramentas?", + "fieldTitle": "Campo", + "fieldTitleAlt": "Os campos geralmente satisfazem a maioria das necessidades, mas se suas configurações MCP exigirem campos adicionais ou tipos diferentes, você pode editar diretamente na área de texto JSON à direita para atender aos requisitos do seu programa", + "initialTimeoutAlt": "O tempo de espera de conexão inicial é definido como 10 segundos por padrão, mas pode ser definido como qualquer número de ponto flutuante de 10 segundos ou mais. Não há limite no número de segundos. É recomendado ajustar este valor se o servidor tiver uma conexão lenta.", + "initialTimeoutPlaceholder": "Digite o Tempo Limite Inicial...", + "initialTimeoutError": "Por favor, digite um número maior ou igual a 10", + "jsonDesc": "Por favor, digite ou cole o JSON do Servidor MCP no campo", + "addArg": "Adicionar Argumento", + "addEnv": "Adicionar Variável de Ambiente", + "jsonFormatError": { + "addFormat": "Erro no formato da configuração, por favor verifique e corrija o formato", + "format": "Erro no formato da configuração {{mcp}}, por favor verifique e corrija o formato", + "nameEmpty": "O nome não pode estar vazio, por favor digite um nome válido", + "nameExist": "Já existe uma configuração com o nome \"{{mcp}}\"", + "stringError": "Ferramenta {{mcp}}: O campo {{field}} deve ser uma string", + "numberError": "Ferramenta {{mcp}}: O campo {{field}} deve ser um número", + "floatError": "Ferramenta {{mcp}}: O campo {{field}} deve ser um float", + "booleanError": "Ferramenta {{mcp}}: O campo {{field}} deve ser definido como true ou false", + "arrayError": "Ferramenta {{mcp}}: O campo {{field}} deve ser fornecido como um array", + "objectError": "Ferramenta {{mcp}}: O campo {{field}} deve ser fornecido como um objeto", + "optionError": "Ferramenta {{mcp}}: O campo {{field}} só pode ser {{options}}", + "requiredError": "Ferramenta {{mcp}}: O campo {{field}} é obrigatório", + "jsonError": "Ferramenta {{mcp}}: Erro no formato JSON, por favor verifique e corrija o formato", + "toolNumberError": "Apenas uma ferramenta pode ser definida no modo de edição, por favor remova outros itens não-ferramenta", + "enabled": "Ferramenta {{mcp}}: O campo enabled deve ser definido como true ou false", + "command": "Ferramenta {{mcp}}: O campo command deve ser uma string", + "args": "Ferramenta {{mcp}}: O campo args deve ser fornecido como um array", + "env": "Ferramenta {{mcp}}: O campo env deve ser fornecido como um objeto", + "url": "Ferramenta {{mcp}}: O campo url deve ser uma string", + "transport": "Ferramenta {{mcp}}: O campo transport só pode ser {{options}}", + "initialTimeout": "Ferramenta {{mcp}}: O campo initialTimeout deve ser um float", + "range": "Ferramenta {{mcp}}: O valor do campo {{field}} está fora do intervalo, por favor verifique e corrija o valor", + "minRange": "Ferramenta {{mcp}}: O campo {{field}} deve ser maior ou igual a {{value}}", + "maxRange": "Ferramenta {{mcp}}: O campo {{field}} deve ser menor ou igual a {{value}}" + }, + "namePlaceholder": "Digite o nome...", + "commandPlaceholder": "Digite o comando...", + "argsPlaceholder": "Digite os argumentos...", + "envKey": "Digite o nome da variável (Chave)...", + "envValue": "Digite o valor da variável (Valor)...", + "inputKeyError": "Nome da variável {{ name }} duplicado", + "urlPlaceholder": "Digite a URL...", + "transportPlaceholder": "Selecione o Transporte...", + "providerSearchPlaceholder": "Digite para pesquisar Provedor...", + "noProviderSearchResult": "Nenhum Provedor relacionado encontrado", + "toogleToolAlt": "Ativar Ferramentas MCP", + "logTitle": "Executar Comando UVX", + "logProcessing": "Processando...", + "no_tool_title": "Nenhum Servidor MCP Disponível", + "no_oap_tool_message": { + "all": "Por favor, selecione um Servidor MCP OAP para usar, ou adicione um Servidor MCP personalizado.", + "oap": "Por favor, selecione um Servidor MCP OAP para usar.", + "custom": "Por favor, adicione um Servidor MCP personalizado." + }, + "no_tool_message": "Por favor, adicione um Servidor MCP.", + "tab": { + "all": "Todas as Ferramentas", + "oap": "Ferramentas OAP", + "custom": "Ferramentas Personalizadas" + }, + "oapStoreLinkAlt": "Ver Detalhes", + "subToolsCount": "Ferramentas Ativadas: {{count}} / {{total}}", + "disabledDescription": "Desativado", + "unsaved": { + "title": "Alterações Não Salvas", + "desc": "Você tem alterações não salvas. Se você sair desta página, as alterações serão perdidas. Deseja continuar?", + "cancel": "Cancelar Alterações", + "save": "Salvar" + }, + "oauthAlert": "Por favor, confirme que você confia neste conector: este conector não foi verificado pelo Dive. Você é responsável por todas as operações que realizar com o Dive.", + "reload": { + "headerBtn": "Recarregar", + "headerBtnAlt": "Recarregar e Atualizar Ferramentas MCP" + }, + "oap": { + "type": { + "all": "Todas as Ferramentas", + "base": "Mostrar Apenas Base", + "pro": "Mostrar Apenas Pro" + }, + "sort": { + "title": "Ordenar", + "popular": "Popular", + "new": "Novo" + }, + "tag": "Tag", + "no_search_data_title": "Nenhuma Ferramenta MCP encontrada", + "no_search_data": "Nenhum resultado de pesquisa encontrado, por favor limpe a palavra-chave de pesquisa ou ajuste as condições do filtro.", + "clear_filter": "Limpar Filtro", + "hint": "Servidores MCP de alto nível requerem atualização para a versão Pro para instalar", + "high_cost_title": "Ativar Servidores MCP de Alto Custo", + "high_cost_desc": "Você selecionou Servidores MCP que consomem muitos tokens. Por favor, verifique se o uso do seu plano é suficiente.", + "headerBtnAlt": "Adicionar / Ver Ferramentas MCP OAP" + }, + "custom": { + "headerBtn": "Adicionar / Editar Configuração", + "headerBtnAlt": "Adicionar / Editar Ferramentas Personalizadas", + "listAdd": "Adicionar Servidor MCP", + "titleAdd": "Adicionar Servidor MCP", + "titleEdit": "Editar {{tool}} MCP", + "titleEditJson": "Configurações de Ferramentas MCP" + } + }, + "modelConfig": { + "title": "Configurações do Modelo", + "customInstructions": "Prompt Personalizado", + "customInstructionsPlaceholder": "Digite o prompt do sistema personalizado...", + "customInstructionsDescription": "Estes prompts serão adicionados ao final do prompt do sistema de cada solicitação", + "saveInstructions": "Salvar Instruções", + "customRulesSaved": "Instruções personalizadas salvas", + "customRulesFailed": "Falha ao salvar instruções personalizadas", + "modelDescription": "Nome do modelo a ser usado", + "modelDescriptionHint": "Nome do modelo a ser usado (Por favor, digite a Chave da API primeiro para ver os modelos disponíveis)" + }, + "common": { + "close": "Fechar", + "confirm": "Confirmar", + "cancel": "Cancelar", + "copy": "Copiar", + "copySuccess": "Copiado", + "zoomInImage": "Ampliar Imagem", + "copyImage": "Copiar Imagem", + "copyImageUrl": "Copiar URL da Imagem", + "downloadImage": "Baixar Imagem", + "login": "Entrar", + "signup": "Cadastrar", + "save": "Salvar", + "signout": "Sair" + }, + "models": { + "title": "Configurações do Modelo", + "newProvider": "+ Adicionar Provedor", + "parameters": "Configurações de Parâmetros", + "instructionsSetting": "Configurações de Instruções", + "listTitle": "Configurar Provedor do Modelo", + "optional": "(Opcional)", + "selfOptional": "(Opcional)", + "unSupportModelCount": "Você selecionou {{count}} modelos não suportados", + "deleteTitle": "Confirmar exclusão da Chave {{name}}?", + "deleteDescription": "Esta ação não pode ser desfeita.", + "deleteAllTitle": "Confirmar exclusão do modelo?", + "deleteAllDescription": "Após a exclusão, nenhum modelo estará disponível para conversa", + "deleteToast": "Chave {{name}} excluída", + "deleteFailed": "Falha ao excluir Autenticação do Provedor", + "providerMenu1": "Editar Provedor", + "providerMenu2": "Gerenciar Modelo", + "providerMenu3": "Excluir", + "verifying": "Verificando Chave da API e modelo...", + "verifyingAbort": "Verificação interrompida, por favor tente novamente mais tarde", + "apiKeyError": "Chave da API inválida, por favor verifique e digite novamente sua Chave da API.", + "closeAllTitle": "Confirmar desativação?", + "closeAllDescription": "Após a desativação, nenhum modelo estará disponível para conversa", + "noModelAlertTitle": "Nenhum modelo disponível!", + "noModelAlertDescription": "Todos os modelos selecionados não são suportados, a conversa não é possível", + "selectModelPlaceHolder": "Selecionar modelo...", + "noModelAlertOption": "Nenhum modelo disponível", + "popupTitle": "Modelos Disponíveis", + "searchPlaceholder": "Pesquisar modelos...", + "noResult": "Nenhum modelo disponível", + "reloadModelList": "Recarregar", + "modelSaved": "Modelos salvos", + "modelSaveFailed": "Falha ao salvar modelos", + "parameterSaved": "Parâmetros salvos", + "parameterSaveFailed": "Falha ao salvar parâmetros", + "ignored": "Pular verificação para este modelo", + "unSupportModel": "Modelo não suportado", + "unToolCallsSupport": "Chamadas de Ferramentas não suportadas", + "verify": "Verificar", + "verifyIgnore": "Ignorar", + "verifyIgnoreAlt": "O lembrete de verificação não será mais exibido", + "verifyNextTime": "Mais tarde", + "verifyNextTimeAlt": "Solicitará verificação na próxima vez", + "verifyTitle": "! Detectados {{count}} modelos não verificados", + "verifyDesc": "Os seguintes modelos não estão verificados. Deseja verificá-los?", + "progressVerifying": "Verificação de modelo em andamento, por favor aguarde...", + "verifyMenu": { + "advanced": "Configurações Avançadas", + "verify": "Verificar Modelo", + "ignore": "Ignorar Verificação", + "delete": "Excluir Modelo" + }, + "customModelID": { + "add": "+ ID de Modelo Personalizado", + "title": "ID de Modelo Personalizado", + "placeholder": "Digite o ID do modelo personalizado...", + "Error": { + "empty": "O ID do modelo personalizado não pode estar vazio", + "exist": "O ID do modelo personalizado já existe" + } + }, + "copyContent": "Copiar Conteúdo", + "editProviderTitle": "Editar Configuração do {{provider}}", + "hide": "Ocultar", + "display": "Exibir", + "copy": "Copiar", + "modelSetting": "Configurações Avançadas", + "streamingModeTooltip": "O Modo de Streaming é quando o modelo responde, ele mostra o conteúdo gradualmente, em vez de mostrar tudo de uma vez. Desligar o botão, no Modo Não-Streaming, esperará o modelo gerar o conteúdo completamente e exibir tudo de uma vez, evitando problemas de compatibilidade com chamadas de ferramentas no modelo.", + "streamingModeDescription": "Controlar como as respostas do modelo são exibidas", + "streamingModeAlert": "Lembrete: Alguns modelos suportam chamada de ferramentas apenas no Modo de Streaming ou no Modo Não-Streaming. É recomendado entender completamente suas necessidades antes de ajustar este parâmetro.", + "customInput": "Entrada Personalizada", + "addCustomParameter": "Adicionar Parâmetro Personalizado", + "parameterName": "Nome do Parâmetro", + "parameterType": "Tipo do Parâmetro", + "parameterValue": "Valor do Parâmetro", + "parameterNameDescription": "Digite o nome, como temperature", + "parameterTypeDescription": "Selecione o tipo", + "parameterValueDescription": "Por favor, selecione o tipo de parâmetro primeiro e depois digite o valor", + "parameterNameDuplicate": "O nome do parâmetro já existe", + "parameterTypeInt": "Inteiro", + "parameterTypeFloat": "Float", + "parameterTypeString": "String", + "parameterTypeIntDescription": "Faixa permitida 0-1M", + "parameterTypeFloatDescription": "Faixa permitida 0.0-1.0", + "parameterTypeStringDescription": "Por favor, digite uma string, como medium", + "reasoningLevelDescription": "Definir a profundidade do pensamento do modelo", + "reasoningLevelTooltip": "Baixo representa uma resposta rápida, focando em conclusões e sem detalhes adicionais, com um raciocínio direto e simples. Médio fornece uma resposta com explicação lógica suficiente, cobrindo informações chave. Alto oferece uma resposta profunda com análise e explicação estruturada e detalhada.", + "tokenBudgetDescription": "Definir valor de raciocínio ({{min}}~{{max}})", + "parameterVerify": "Verificação de Parâmetros", + "verifyErrorInfo": "Detalhes do Erro de Verificação", + "verifyErrorMsg": "O modelo não usou nenhuma ferramenta durante a verificação, o que pode ser devido à falta de suporte ou não ter sido acionado. Portanto, não é possível confirmar se ele suporta ferramentas.", + "verifyStatusSuccess": "Verificação do modelo bem-sucedida, ativado com a configuração original", + "verifyStatusSuccessInPrompt": "Verificação do modelo bem-sucedida, ativado com MCP Prompts", + "verifyUnexpectedFailed": "Falha na verificação do modelo, ocorreu um erro desconhecido, por favor tente novamente mais tarde", + "oapUsageLimit": "Limite de uso atingido, temporariamente indisponível" + }, + "system": { + "title": "Configurações do Sistema", + "language": "Idioma do Sistema", + "languageDefault": "Padrão do Sistema", + "languageDescription": "Idioma usado para exibir a interface do sistema. O idioma usado no modelo pode ser modificado na página de configurações do modelo, isso se refere ao idioma exibido na interface do Dive", + "theme": "Modo Escuro", + "themeDescription": "Alternar entre o padrão do sistema e o modo escuro", + "defaultInstructions": "speak in Portuguese", + "autoDownload": "Baixar Atualização Automaticamente", + "autoDownloadDescription": "Baixar automaticamente a nova versão do DIVE quando o usuário reiniciar ou clicar no botão \"Atualizar\" na página do menu, a nova versão será ativada", + "autoLaunch": "Iniciar Automaticamente", + "autoLaunchDescription": "Iniciar automaticamente o Dive AI quando o sistema iniciar", + "minimalToTray": "Minimizar para a bandeja", + "minimalToTrayDescription": "Ao fechar a janela, o programa será minimizado para a bandeja do sistema em vez de sair completamente", + "loginTitle": "Login OAP", + "loginDescription": "Use o OpenAgentPlatform para fazer login, não é necessário conhecimento técnico para conectar facilmente LLMs, AI Agents e MCP Servers — Experimente soluções inteligentes agora!", + "personalInformationTitle": "Informações Pessoais", + "defaultSystemPrompt": "Prompt do Sistema Padrão do Dive", + "defaultSystemPromptDescription": "O Prompt do Sistema Padrão do Dive é usado como o prompt do sistema padrão para o chat. Ele informa ao LLM que o chat do Dive suporta KaTeX / Markdown / Mermaid, etc. Este recurso consome certos tokens, o que pode tornar a resposta mais lenta do que o prompt sem um prompt do sistema. Por outro lado, se for desativado, a qualidade da resposta do LLM pode diminuir", + "usageAnalytics": "Vá para a página do Dashboard no OAP Hub para visualizar", + "usageAnalyticsTitle": "Análises de Uso", + "userEdit": "Vá para a página da Conta no OAP Hub para fazer alterações", + "planSectionTitle": "Uso atual do plano", + "subscriptionDate": "Data de assinatura", + "remainingUsage": "Uso restante", + "usageWarningTitle": "Limite de uso de tokens atingido.", + "usageWarning": "A cota do plano Pro será reiniciada no próximo mês, ou compre pacotes de tokens para mais uso. Modelos Básicos e MCP ainda estão disponíveis.", + "BaseSubscriptionDate": "Nunca expira", + "BaseRemainingUsage": "Sem limite", + "BaseUsageWarning": "O plano Base inclui acesso a Modelos Básicos e MCPs Básicos. Para usar outros modelos e MCPs, por favor atualize seu plano na Página do Plano.", + "customPromptDescription": "Se você precisar de instruções personalizadas adicionais, por favor clique na função \"Prompt Personalizado\" abaixo para configurá-lo.", + "customPromptButton": "Prompt Personalizado", + "tokenPackageTitle": "Uso do pacote de tokens", + "tokenPackageHint": "Os pacotes de tokens não têm data de validade e só serão usados após a cota do plano mensal ser esgotada.", + "tokenPackageRemainingUsage": "Uso restante", + "tokenPackageWarningTitle": "Cota de tokens esgotada.", + "tokenPackageWarning": "Você pode reabastecer mais uso de tokens no OAPhub página do Dashboard.", + "skipTlsVerifyWarning": "Aviso de segurança: Ignorar a verificação de certificado pode reduzir a segurança da conexão. É recomendado usar em ambientes de rede confiáveis." + }, + "toast": { + "copiedToClipboard": "Copiado para a área de transferência", + "copyFailed": "Falha ao copiar", + "copiedImage": "Imagem Copiada", + "downloadedImage": "Imagem Baixada" + }, + "keymap": { + "title": "Atalhos de Teclado", + "events": { + "chat-input_submit": "Enviar Mensagem", + "chat-input_upload-file": "Enviar Arquivo", + "chat-input_focus": "Focar Entrada", + "chat-input_paste-last-message": "Colar Última Mensagem", + "chat-message_copy-last": "Copiar Última Mensagem", + "chat_delete": "Excluir Conversa", + "global_new-chat": "Nova Conversa", + "global_toggle-sidebar": "Alternar Barra Lateral", + "global_close-layer": "Fechar Janela", + "global_toggle-keymap-modal": "Alternar Ajuda de Atalho de Teclado" + } + }, + "update": { + "downloading": "Baixando...", + "readyToInstall": "Pronto para Instalar", + "clickToInstall": "Clique para Instalar Atualização" + }, + "login": { + "subtitle": "Dive AI é uma aplicação desktop de código aberto que integra perfeitamente vários modelos de linguagem grandes que suportam chamadas de função. Através de sua interface limpa e intuitiva, você pode facilmente conversar com IA de ponta, desde perguntas e respostas diárias até tarefas profissionais, obtendo respostas precisas e tornando-o seu assistente inteligente.", + "title1": "Use Seus Próprios Modelos Preparados", + "description1": "Adequado para especialistas em IA avançados. Se você já tem sua própria configuração pronta, seja Ollama local, llama.cpp ou APIs LLM remotas de Openrouter, OpenAI, Anthropic ou outras empresas de IA, por favor use esta opção.", + "button1": "Ir para Configurações do Modelo", + "title2": "Usar OpenAgentPlatform", + "description2": "OAP torna fácil para todos usarem os serviços de IA mais avançados, conectando LLMs, AI Agents e MCP Servers sem exigir conhecimento técnico. Explore as possibilidades ilimitadas da IA e experimente soluções inteligentes agora.", + "button2": "Registrar-se no OAP", + "button3": "Entrar no OAP" + }, + "InstallHostDependencies": { + "title": "Baixando Dependências do Host...", + "retry": "Tentar Novamente", + "stop": "Parar", + "tip": "Se ocorrer um erro durante o download, por favor feche esta janela primeiro e reinicie a aplicação para baixar novamente." + }, + "deeplink": { + "mcpInstallConfirm": "Adicionar Serviço MCP stdio - Você adicionará MCP através do seguinte comando, por favor confirme:" + } +} + diff --git a/src/locales/ru/translation.json b/src/locales/ru/translation.json new file mode 100644 index 00000000..ebc47a6f --- /dev/null +++ b/src/locales/ru/translation.json @@ -0,0 +1,442 @@ +{ + "header": { + "title": "Dive AI", + "openSidebar": "Открыть боковую панель", + "closeSidebar": "Закрыть боковую панель" + }, + "chat": { + "placeholder": "Отправить сообщение...", + "newChat": "Новый чат", + "newChatTooltip": "Начать новый разговор", + "history": "История", + "copyCode": "Копировать", + "previewCode": "Нажмите для предпросмотра", + "uploadFile": "Загрузить файл", + "send": "Отправить", + "untitledChat": "Чат без названия", + "deleteChat": "Удалить чат", + "deleteSuccess": "Чат удален", + "deleteFailed": "Удаление не удалось", + "confirmDelete": "Подтвердить удаление", + "confirmDeleteDescription": "После удаления чат не может быть восстановлен.", + "tools": { + "button": "Инструменты", + "enabledHint": "Включено {{enabled}} инструментов", + "failedHint": "Включено {{enabled}} инструментов, {{failed}} инструментов не удалось" + }, + "abort": "Остановить генерацию", + "retry": "Повторить", + "noModelAlert": "Нет доступных моделей", + "noModelBanner": "Нет доступных моделей, сначала выберите модель", + "onLimit": "Вы достигли лимита использования плана {{plan}}, модели oap не могут быть использованы", + "modelSettings": "Настройки модели", + "copy": "Копировать", + "copied": "Скопировано", + "edit": "Редактировать", + "editDescription": "Редактирование этого сообщения создаст новый ответ", + "cancel": "Отменить", + "save": "Сохранить", + "toolCalls": "🛠 Результат вызова инструмента {{name}}", + "unsupportTools": "{{model}} не поддерживает вызовы инструментов", + "dragFiles": "Перетащите файлы сюда, чтобы добавить в чат", + "tools-btn": { + "disableToast": "Вызовы инструментов отключены", + "disable": "Отключить вызовы инструментов", + "enableToast": "Вызовы инструментов включены", + "enable": "Включить вызовы инструментов" + } + }, + "welcome": { + "title": "Добро пожаловать в Dive AI", + "subtitle": "Начните свой разговор с AI", + "startChat": "Начать чат" + }, + "setup": { + "title": "Начальная настройка", + "subtitle": "Пожалуйста, настройте параметры модели", + "required": "Это поле обязательно", + "submit": "Сохранить настройки", + "provider": "Поставщик модели", + "verify": "Проверить модель", + "verifying": "Проверка...", + "verifySuccess": "Проверка модели успешна", + "verifySuccessNoTool": "Проверка модели успешна, но не поддерживает вызовы инструментов", + "verifyFailed": "Проверка модели не удалась", + "verifyError": "Произошла ошибка во время проверки", + "saveSuccess": "Настройки успешно сохранены", + "saveFailed": "Не удалось сохранить настройки", + "back": "Назад", + "parameters": "Параметры", + "topPDescription": "Параметр Top-P контролирует диапазон выбора слов. Значение 0 использует значение по умолчанию; более низкие значения выбирают только слова с высокой вероятностью, что приводит к консервативным ответам; более высокие значения расширяют диапазон словарного запаса, что приводит к более разнообразным ответам.", + "temperatureDescription": "Параметр температуры контролирует случайность ответов. Значение 0 использует значение по умолчанию; более низкие значения производят более точные и стабильные ответы; более высокие значения генерируют более творческие, но менее строгие ответы." + }, + "sidebar": { + "tools": "Управление инструментами (MCP)", + "settings": "Настройки модели", + "update": "Доступно обновление", + "models": "Настройки модели", + "system": "Системные настройки", + "manageAndSettings": "Управление и настройки", + "OAPhub": "OAPhub", + "signOut": "Выйти", + "chat": { + "starredChat": "Избранное", + "starChat": "Добавить в избранное", + "unStarChat": "Удалить из избранного", + "starFailed": "Не удалось добавить в избранное", + "renameChat": "Переименовать", + "renameFailed": "Переименование не удалось", + "deleteChat": "Удалить" + } + }, + "setting": { + "tabs": { + "Tools": "Управление инструментами MCP", + "Model": "Поставщик модели", + "Account": "Аккаунт", + "System": "Системные настройки" + } + }, + "tools": { + "title": "Управление инструментами (MCP)", + "editConfig": "Редактировать конфигурацию", + "editConfigAlt": "Редактировать конфигурацию сервера MCP", + "configTitle": "Конфигурация сервера MCP", + "save": "Сохранить", + "cancel": "Отменить", + "saveSuccess": "Настройки успешно сохранены", + "saveFailed": "Не удалось сохранить настройки", + "toggleFailed": "Произошла ошибка", + "reloadFailed": "{{toolName}} произошла ошибка, перезагрузка не удалась", + "reloadAllFailed": "{{number}} вызовов инструментов произошла ошибка, перезагрузка не удалась", + "openConfigFolder": "Папка конфигурации", + "openConfigFolderAlt": "Открыть папку конфигурации", + "fetchFailed": "Не удалось загрузить инструменты", + "configFetchFailed": "Не удалось загрузить конфигурацию", + "configSaveAborted": "Сохранение конфигурации прервано", + "invalidJson": "Неверный формат JSON", + "updateFailed": "{{serverName}} не удалось загрузить: {{error}}", + "installFailed": "Установка не удалась", + "startFailed": "Запуск не удался", + "toolMenu": { + "delete": "Удалить", + "edit": "Редактировать", + "reload": "Перезагрузить", + "detail": "Просмотреть детали" + }, + "delete": "Удалить", + "jsonCopy": "Копировать", + "jsonCopied": "Скопировано", + "jsonDownload": "Скачать", + "deleteTitle": "Подтвердить удаление инструмента {{mcp}}?", + "deleteAllTitle": "Подтвердить удаление всех инструментов?", + "fieldTitle": "Поле", + "fieldTitleAlt": "Поля обычно удовлетворяют большинство потребностей, но если ваши настройки MCP требуют дополнительных полей или других типов, вы можете редактировать непосредственно в текстовой области JSON справа, чтобы удовлетворить требованиям вашей программы", + "initialTimeoutAlt": "Начальное время ожидания подключения по умолчанию установлено на 10 секунд, но может быть установлено на любое число с плавающей точкой 10 секунд или более. Нет ограничения на количество секунд. Рекомендуется настроить это значение, если сервер имеет медленное подключение.", + "initialTimeoutPlaceholder": "Введите начальный тайм-аут...", + "initialTimeoutError": "Пожалуйста, введите число больше или равное 10", + "jsonDesc": "Пожалуйста, введите или вставьте JSON сервера MCP в поле", + "addArg": "Добавить аргумент", + "addEnv": "Добавить переменную окружения", + "jsonFormatError": { + "addFormat": "Ошибка формата конфигурации, пожалуйста, проверьте и исправьте формат", + "format": "Ошибка формата конфигурации {{mcp}}, пожалуйста, проверьте и исправьте формат", + "nameEmpty": "Имя не может быть пустым, пожалуйста, введите действительное имя", + "nameExist": "Конфигурация с именем \"{{mcp}}\" уже существует", + "stringError": "Инструмент {{mcp}}: Поле {{field}} должно быть строкой", + "numberError": "Инструмент {{mcp}}: Поле {{field}} должно быть числом", + "floatError": "Инструмент {{mcp}}: Поле {{field}} должно быть числом с плавающей точкой", + "booleanError": "Инструмент {{mcp}}: Поле {{field}} должно быть установлено на true или false", + "arrayError": "Инструмент {{mcp}}: Поле {{field}} должно быть предоставлено в виде массива", + "objectError": "Инструмент {{mcp}}: Поле {{field}} должно быть предоставлено в виде объекта", + "optionError": "Инструмент {{mcp}}: Поле {{field}} может быть только {{options}}", + "requiredError": "Инструмент {{mcp}}: Поле {{field}} обязательно", + "jsonError": "Инструмент {{mcp}}: Ошибка формата JSON, пожалуйста, проверьте и исправьте формат", + "toolNumberError": "В режиме редактирования может быть установлен только один инструмент, пожалуйста, удалите другие элементы, не являющиеся инструментами", + "enabled": "Инструмент {{mcp}}: Поле enabled должно быть установлено на true или false", + "command": "Инструмент {{mcp}}: Поле command должно быть строкой", + "args": "Инструмент {{mcp}}: Поле args должно быть предоставлено в виде массива", + "env": "Инструмент {{mcp}}: Поле env должно быть предоставлено в виде объекта", + "url": "Инструмент {{mcp}}: Поле url должно быть строкой", + "transport": "Инструмент {{mcp}}: Поле transport может быть только {{options}}", + "initialTimeout": "Инструмент {{mcp}}: Поле initialTimeout должно быть числом с плавающей точкой", + "range": "Инструмент {{mcp}}: Значение поля {{field}} выходит за пределы диапазона, пожалуйста, проверьте и исправьте значение", + "minRange": "Инструмент {{mcp}}: Поле {{field}} должно быть больше или равно {{value}}", + "maxRange": "Инструмент {{mcp}}: Поле {{field}} должно быть меньше или равно {{value}}" + }, + "namePlaceholder": "Введите имя...", + "commandPlaceholder": "Введите команду...", + "argsPlaceholder": "Введите аргументы...", + "envKey": "Введите имя переменной (Ключ)...", + "envValue": "Введите значение переменной (Значение)...", + "inputKeyError": "Дубликат имени переменной {{ name }}", + "urlPlaceholder": "Введите URL...", + "transportPlaceholder": "Выберите транспорт...", + "providerSearchPlaceholder": "Введите поиск Поставщика...", + "noProviderSearchResult": "Связанный поставщик не найден", + "toogleToolAlt": "Включить инструменты MCP", + "logTitle": "Выполнить команду UVX", + "logProcessing": "Обработка...", + "no_tool_title": "Нет доступных серверов MCP", + "no_oap_tool_message": { + "all": "Пожалуйста, выберите сервер MCP OAP для использования или добавьте пользовательский сервер MCP.", + "oap": "Пожалуйста, выберите сервер MCP OAP для использования.", + "custom": "Пожалуйста, добавьте пользовательский сервер MCP." + }, + "no_tool_message": "Пожалуйста, добавьте сервер MCP.", + "tab": { + "all": "Все инструменты", + "oap": "Инструменты OAP", + "custom": "Пользовательские инструменты" + }, + "oapStoreLinkAlt": "Просмотреть детали", + "subToolsCount": "Включенные инструменты: {{count}} / {{total}}", + "disabledDescription": "Отключено", + "unsaved": { + "title": "Несохраненные изменения", + "desc": "У вас есть несохраненные изменения. Если вы покинете эту страницу, изменения будут потеряны. Хотите продолжить?", + "cancel": "Отменить изменения", + "save": "Сохранить" + }, + "oauthAlert": "Пожалуйста, подтвердите, что вы доверяете этому коннектору: этот коннектор не был проверен Dive. Вы несете ответственность за все операции, которые вы выполняете с Dive.", + "reload": { + "headerBtn": "Перезагрузить", + "headerBtnAlt": "Перезагрузить и обновить инструменты MCP" + }, + "oap": { + "type": { + "all": "Все инструменты", + "base": "Показать только Base", + "pro": "Показать только Pro" + }, + "sort": { + "title": "Сортировать", + "popular": "Популярное", + "new": "Новое" + }, + "tag": "Тег", + "no_search_data_title": "Инструменты MCP не найдены", + "no_search_data": "Результаты поиска не найдены, пожалуйста, очистите ключевое слово поиска или настройте условия фильтра.", + "clear_filter": "Очистить фильтр", + "hint": "Высокоуровневые серверы MCP требуют обновления до версии Pro для установки", + "high_cost_title": "Включить серверы MCP с высокой стоимостью", + "high_cost_desc": "Вы выбрали серверы MCP, которые потребляют много токенов. Пожалуйста, проверьте, достаточно ли использования вашего плана.", + "headerBtnAlt": "Добавить / Просмотреть инструменты MCP OAP" + }, + "custom": { + "headerBtn": "Добавить / Редактировать конфигурацию", + "headerBtnAlt": "Добавить / Редактировать пользовательские инструменты", + "listAdd": "Добавить сервер MCP", + "titleAdd": "Добавить сервер MCP", + "titleEdit": "Редактировать {{tool}} MCP", + "titleEditJson": "Настройки инструментов MCP" + } + }, + "modelConfig": { + "title": "Настройки модели", + "customInstructions": "Пользовательская подсказка", + "customInstructionsPlaceholder": "Введите пользовательскую системную подсказку...", + "customInstructionsDescription": "Эти подсказки будут добавлены в конец системной подсказки каждого запроса", + "saveInstructions": "Сохранить инструкции", + "customRulesSaved": "Пользовательские инструкции сохранены", + "customRulesFailed": "Не удалось сохранить пользовательские инструкции", + "modelDescription": "Имя модели для использования", + "modelDescriptionHint": "Имя модели для использования (Пожалуйста, сначала введите API-ключ, чтобы увидеть доступные модели)" + }, + "common": { + "close": "Закрыть", + "confirm": "Подтвердить", + "cancel": "Отменить", + "copy": "Копировать", + "copySuccess": "Скопировано", + "zoomInImage": "Увеличить изображение", + "copyImage": "Копировать изображение", + "copyImageUrl": "Копировать URL изображения", + "downloadImage": "Скачать изображение", + "login": "Войти", + "signup": "Зарегистрироваться", + "save": "Сохранить", + "signout": "Выйти" + }, + "models": { + "title": "Настройки модели", + "newProvider": "+ Добавить поставщика", + "parameters": "Настройки параметров", + "instructionsSetting": "Настройки инструкций", + "listTitle": "Настроить поставщика модели", + "optional": "(Необязательно)", + "selfOptional": "(Необязательно)", + "unSupportModelCount": "Вы выбрали {{count}} неподдерживаемых моделей", + "deleteTitle": "Подтвердить удаление ключа {{name}}?", + "deleteDescription": "Это действие не может быть отменено.", + "deleteAllTitle": "Подтвердить удаление модели?", + "deleteAllDescription": "После удаления модели не будут доступны для разговора", + "deleteToast": "Ключ {{name}} удален", + "deleteFailed": "Не удалось удалить аутентификацию поставщика", + "providerMenu1": "Редактировать поставщика", + "providerMenu2": "Управлять моделью", + "providerMenu3": "Удалить", + "verifying": "Проверка API-ключа и модели...", + "verifyingAbort": "Проверка прервана, пожалуйста, попробуйте позже", + "apiKeyError": "Неверный API-ключ, пожалуйста, проверьте и введите ваш API-ключ заново.", + "closeAllTitle": "Подтвердить деактивацию?", + "closeAllDescription": "После деактивации модели не будут доступны для разговора", + "noModelAlertTitle": "Нет доступных моделей!", + "noModelAlertDescription": "Все выбранные модели не поддерживаются, разговор невозможен", + "selectModelPlaceHolder": "Выбрать модель...", + "noModelAlertOption": "Нет доступных моделей", + "popupTitle": "Доступные модели", + "searchPlaceholder": "Поиск моделей...", + "noResult": "Нет доступных моделей", + "reloadModelList": "Перезагрузить", + "modelSaved": "Модели сохранены", + "modelSaveFailed": "Не удалось сохранить модели", + "parameterSaved": "Параметры сохранены", + "parameterSaveFailed": "Не удалось сохранить параметры", + "ignored": "Пропустить проверку для этой модели", + "unSupportModel": "Модель не поддерживается", + "unToolCallsSupport": "Вызовы инструментов не поддерживаются", + "verify": "Проверить", + "verifyIgnore": "Игнорировать", + "verifyIgnoreAlt": "Напоминание о проверке больше не будет отображаться", + "verifyNextTime": "Позже", + "verifyNextTimeAlt": "Запросит проверку в следующий раз", + "verifyTitle": "! Обнаружено {{count}} непроверенных моделей", + "verifyDesc": "Следующие модели не проверены. Хотите их проверить?", + "progressVerifying": "Проверка модели в процессе, пожалуйста, подождите...", + "verifyMenu": { + "advanced": "Расширенные настройки", + "verify": "Проверить модель", + "ignore": "Игнорировать проверку", + "delete": "Удалить модель" + }, + "customModelID": { + "add": "+ Пользовательский ID модели", + "title": "Пользовательский ID модели", + "placeholder": "Введите пользовательский ID модели...", + "Error": { + "empty": "Пользовательский ID модели не может быть пустым", + "exist": "Пользовательский ID модели уже существует" + } + }, + "copyContent": "Копировать содержимое", + "editProviderTitle": "Редактировать конфигурацию {{provider}}", + "hide": "Скрыть", + "display": "Показать", + "copy": "Копировать", + "modelSetting": "Расширенные настройки", + "streamingModeTooltip": "Режим потоковой передачи - это когда модель отвечает, она показывает содержимое постепенно, а не показывает все сразу. Отключение кнопки в режиме без потоковой передачи будет ждать, пока модель полностью сгенерирует содержимое и покажет все сразу, избегая проблем совместимости с вызовами инструментов в модели.", + "streamingModeDescription": "Контролировать, как отображаются ответы модели", + "streamingModeAlert": "Напоминание: Некоторые модели поддерживают вызовы инструментов только в режиме потоковой передачи или без потоковой передачи. Рекомендуется полностью понять ваши потребности перед настройкой этого параметра.", + "customInput": "Пользовательский ввод", + "addCustomParameter": "Добавить пользовательский параметр", + "parameterName": "Имя параметра", + "parameterType": "Тип параметра", + "parameterValue": "Значение параметра", + "parameterNameDescription": "Введите имя, например, температура", + "parameterTypeDescription": "Выберите тип", + "parameterValueDescription": "Пожалуйста, сначала выберите тип параметра, а затем введите значение", + "parameterNameDuplicate": "Имя параметра уже существует", + "parameterTypeInt": "Целое число", + "parameterTypeFloat": "Число с плавающей точкой", + "parameterTypeString": "Строка", + "parameterTypeIntDescription": "Допустимый диапазон 0-1M", + "parameterTypeFloatDescription": "Допустимый диапазон 0.0-1.0", + "parameterTypeStringDescription": "Пожалуйста, введите строку, например, medium", + "reasoningLevelDescription": "Установить глубину мышления модели", + "reasoningLevelTooltip": "Низкий представляет быстрый ответ, фокусируясь на выводах и без дополнительных деталей, с прямым и простым рассуждением. Средний предоставляет ответ с достаточным логическим объяснением, охватывающим ключевую информацию. Высокий предлагает глубокий ответ со структурированным и подробным анализом и объяснением.", + "tokenBudgetDescription": "Установить значение рассуждения ({{min}}~{{max}})", + "parameterVerify": "Проверка параметров", + "verifyErrorInfo": "Детали ошибки проверки", + "verifyErrorMsg": "Модель не использовала никаких инструментов во время проверки, что может быть связано с отсутствием поддержки или неактивацией. Поэтому невозможно подтвердить, поддерживает ли она инструменты.", + "verifyStatusSuccess": "Проверка модели успешна, включена с исходной конфигурацией", + "verifyStatusSuccessInPrompt": "Проверка модели успешна, включена с MCP Prompts", + "verifyUnexpectedFailed": "Проверка модели не удалась, произошла неизвестная ошибка, пожалуйста, попробуйте позже", + "oapUsageLimit": "Достигнут лимит использования, временно недоступно" + }, + "system": { + "title": "Системные настройки", + "language": "Язык системы", + "languageDefault": "По умолчанию системы", + "languageDescription": "Язык, используемый для отображения системного интерфейса. Язык, используемый в модели, может быть изменен на странице настроек модели, это относится к языку, отображаемому в интерфейсе Dive", + "theme": "Темный режим", + "themeDescription": "Переключение между системным по умолчанию и темным режимом", + "defaultInstructions": "speak in Russian", + "autoDownload": "Автоматическая загрузка обновлений", + "autoDownloadDescription": "Автоматически загружать новую версию DIVE, когда пользователь перезапускается или нажимает кнопку \"Обновить\" на странице меню, новая версия будет включена", + "autoLaunch": "Автозапуск", + "autoLaunchDescription": "Автоматически запускать Dive AI при запуске системы", + "minimalToTray": "Свернуть в трей", + "minimalToTrayDescription": "При закрытии окна программа будет свернута в системный трей вместо полного выхода", + "loginTitle": "Вход в OAP", + "loginDescription": "Используйте OpenAgentPlatform для входа, не требуется технический опыт для легкого подключения LLM, AI-агентов и серверов MCP — Испытайте интеллектуальные решения сейчас!", + "personalInformationTitle": "Личная информация", + "defaultSystemPrompt": "Системная подсказка Dive по умолчанию", + "defaultSystemPromptDescription": "Системная подсказка Dive по умолчанию используется в качестве системной подсказки по умолчанию для чата. Она сообщает LLM, что чат Dive поддерживает KaTeX / Markdown / Mermaid и т.д. Эта функция потребляет определенные токены, что может сделать ответ медленнее, чем подсказка без системной подсказки. С другой стороны, если она отключена, качество ответа LLM может снизиться", + "usageAnalytics": "Перейдите на страницу панели управления в OAP Hub, чтобы просмотреть", + "usageAnalyticsTitle": "Аналитика использования", + "userEdit": "Перейдите на страницу учетной записи в OAP Hub, чтобы внести изменения", + "planSectionTitle": "Использование текущего плана", + "subscriptionDate": "Дата подписки", + "remainingUsage": "Оставшееся использование", + "usageWarningTitle": "Достигнут лимит использования токенов.", + "usageWarning": "Квота плана Pro сбрасывается в следующем месяце или приобретите пакеты токенов для дополнительного использования. Базовые модели и MCP все еще доступны.", + "BaseSubscriptionDate": "Никогда не истекает", + "BaseRemainingUsage": "Без ограничений", + "BaseUsageWarning": "Базовый план включает доступ к базовым моделям и базовым MCP. Чтобы использовать другие модели и MCP, обновите свой план на странице плана.", + "customPromptDescription": "Если вам нужны дополнительные пользовательские инструкции, нажмите на функцию \"Пользовательская подсказка\" ниже, чтобы настроить ее.", + "customPromptButton": "Пользовательская подсказка", + "tokenPackageTitle": "Использование пакета токенов", + "tokenPackageHint": "Пакеты токенов не имеют срока действия и будут использоваться только после исчерпания месячной квоты плана.", + "tokenPackageRemainingUsage": "Оставшееся использование", + "tokenPackageWarningTitle": "Квота токенов использована.", + "tokenPackageWarning": "Вы можете пополнить больше использования токенов на странице панели управления OAPhub.", + "skipTlsVerifyWarning": "Предупреждение о безопасности: Игнорирование проверки сертификата может снизить безопасность подключения. Рекомендуется использовать в доверенных сетевых средах." + }, + "toast": { + "copiedToClipboard": "Скопировано в буфер обмена", + "copyFailed": "Копирование не удалось", + "copiedImage": "Изображение скопировано", + "downloadedImage": "Изображение загружено" + }, + "keymap": { + "title": "Горячие клавиши", + "events": { + "chat-input_submit": "Отправить сообщение", + "chat-input_upload-file": "Загрузить файл", + "chat-input_focus": "Фокус на вводе", + "chat-input_paste-last-message": "Вставить последнее сообщение", + "chat-message_copy-last": "Копировать последнее сообщение", + "chat_delete": "Удалить чат", + "global_new-chat": "Новый чат", + "global_toggle-sidebar": "Переключить боковую панель", + "global_close-layer": "Закрыть окно", + "global_toggle-keymap-modal": "Переключить справку по горячим клавишам" + } + }, + "update": { + "downloading": "Загрузка...", + "readyToInstall": "Готово к установке", + "clickToInstall": "Нажмите, чтобы установить обновление" + }, + "login": { + "subtitle": "Dive AI - это настольное приложение с открытым исходным кодом, которое бесшовно интегрирует различные большие языковые модели, поддерживающие вызовы функций. Благодаря чистому и интуитивному интерфейсу вы можете легко общаться с передовым AI, от повседневных вопросов до профессиональных задач, получая точные ответы и делая его своим интеллектуальным помощником.", + "title1": "Используйте свои собственные подготовленные модели", + "description1": "Подходит для продвинутых экспертов по AI. Если у вас уже есть своя конфигурация, будь то локальная Ollama, llama.cpp или удаленные API LLM от Openrouter, OpenAI, Anthropic или других компаний AI, используйте этот вариант.", + "button1": "Перейти к настройкам модели", + "title2": "Использовать OpenAgentPlatform", + "description2": "OAP делает легким для всех использование самых передовых AI-сервисов, подключая LLM, AI-агенты и серверы MCP без требования технических навыков. Исследуйте неограниченные возможности AI и испытайте интеллектуальные решения сейчас.", + "button2": "Зарегистрироваться в OAP", + "button3": "Войти в OAP" + }, + "InstallHostDependencies": { + "title": "Загрузка зависимостей хоста...", + "retry": "Повторить", + "stop": "Остановить", + "tip": "Если во время загрузки произошла ошибка, сначала закройте это окно и перезапустите приложение для повторной загрузки." + }, + "deeplink": { + "mcpInstallConfirm": "Добавить службу MCP stdio - Вы добавите MCP через следующую команду, пожалуйста, подтвердите:" + } +} + diff --git a/src/locales/sv/translation.json b/src/locales/sv/translation.json new file mode 100644 index 00000000..cacafcb2 --- /dev/null +++ b/src/locales/sv/translation.json @@ -0,0 +1,442 @@ +{ + "header": { + "title": "Dive AI", + "openSidebar": "Öppna sidofält", + "closeSidebar": "Stäng sidofält" + }, + "chat": { + "placeholder": "Skicka meddelande...", + "newChat": "Ny chatt", + "newChatTooltip": "Starta en ny konversation", + "history": "Historik", + "copyCode": "Kopiera", + "previewCode": "Klicka för förhandsgranskning", + "uploadFile": "Ladda upp fil", + "send": "Skicka", + "untitledChat": "Namnlös chatt", + "deleteChat": "Ta bort chatt", + "deleteSuccess": "Chatt borttagen", + "deleteFailed": "Borttagning misslyckades", + "confirmDelete": "Bekräfta borttagning", + "confirmDeleteDescription": "När den är borttagen kan chatten inte återställas.", + "tools": { + "button": "Verktyg", + "enabledHint": "{{enabled}} verktyg aktiverade", + "failedHint": "{{enabled}} verktyg aktiverade, {{failed}} verktyg misslyckades" + }, + "abort": "Stoppa generering", + "retry": "Försök igen", + "noModelAlert": "Inga modeller tillgängliga", + "noModelBanner": "Inga modeller tillgängliga, välj en modell först", + "onLimit": "Du har nått användningsgränsen för {{plan}}-planen, oap-modeller kan inte användas", + "modelSettings": "Modellinställningar", + "copy": "Kopiera", + "copied": "Kopierad", + "edit": "Redigera", + "editDescription": "Att redigera detta meddelande kommer att generera ett nytt svar", + "cancel": "Avbryt", + "save": "Spara", + "toolCalls": "🛠 {{name}} Verktygsanrop resultat", + "unsupportTools": "{{model}} stöder inte verktygsanrop", + "dragFiles": "Släpp filer här för att lägga till i chatten", + "tools-btn": { + "disableToast": "Verktygsanrop inaktiverade", + "disable": "Inaktivera verktygsanrop", + "enableToast": "Verktygsanrop aktiverade", + "enable": "Aktivera verktygsanrop" + } + }, + "welcome": { + "title": "Välkommen till Dive AI", + "subtitle": "Starta din AI-konversation", + "startChat": "Starta chatt" + }, + "setup": { + "title": "Inledande konfiguration", + "subtitle": "Konfigurera modellinställningar", + "required": "Detta fält är obligatoriskt", + "submit": "Spara inställningar", + "provider": "Modellleverantör", + "verify": "Verifiera modell", + "verifying": "Verifierar...", + "verifySuccess": "Modellverifiering lyckades", + "verifySuccessNoTool": "Modellverifiering lyckades, men stöder inte verktygsanrop", + "verifyFailed": "Modellverifiering misslyckades", + "verifyError": "Fel uppstod under verifiering", + "saveSuccess": "Inställningar sparade framgångsrikt", + "saveFailed": "Misslyckades med att spara inställningar", + "back": "Tillbaka", + "parameters": "Parametrar", + "topPDescription": "Top-P-parametern styr ordvalsintervallet. Ett värde på 0 använder standardvärdet; lägre värden väljer endast ord med hög sannolikhet, vilket ger konservativa svar; högre värden breddar ordförrådets intervall, vilket leder till mer varierade svar.", + "temperatureDescription": "Temperaturparametern styr svarens slumpmässighet. Ett värde på 0 använder standardvärdet; lägre värden ger mer exakta och stabila svar; högre värden genererar mer kreativa men mindre rigorösa svar." + }, + "sidebar": { + "tools": "Verktygshantering (MCP)", + "settings": "Modellinställningar", + "update": "Uppdatering tillgänglig", + "models": "Modellinställningar", + "system": "Systeminställningar", + "manageAndSettings": "Hantering och inställningar", + "OAPhub": "OAPhub", + "signOut": "Logga ut", + "chat": { + "starredChat": "Favoriter", + "starChat": "Lägg till favoriter", + "unStarChat": "Ta bort från favoriter", + "starFailed": "Misslyckades lägga till favoriter", + "renameChat": "Byt namn", + "renameFailed": "Namnbyte misslyckades", + "deleteChat": "Ta bort" + } + }, + "setting": { + "tabs": { + "Tools": "MCP-verktygshantering", + "Model": "Modellleverantör", + "Account": "Konto", + "System": "Systeminställningar" + } + }, + "tools": { + "title": "Verktygshantering (MCP)", + "editConfig": "Redigera konfiguration", + "editConfigAlt": "Redigera MCP-serverkonfiguration", + "configTitle": "MCP-serverkonfiguration", + "save": "Spara", + "cancel": "Avbryt", + "saveSuccess": "Inställningar sparade framgångsrikt", + "saveFailed": "Misslyckades med att spara inställningar", + "toggleFailed": "Ett fel uppstod", + "reloadFailed": "{{toolName}} ett fel uppstod, omladdning misslyckades", + "reloadAllFailed": "{{number}} verktygsanrop ett fel uppstod, omladdning misslyckades", + "openConfigFolder": "Konfigurationsmapp", + "openConfigFolderAlt": "Öppna konfigurationsmapp", + "fetchFailed": "Misslyckades ladda verktyg", + "configFetchFailed": "Misslyckades ladda konfiguration", + "configSaveAborted": "Konfigurationssparande avbrutet", + "invalidJson": "Ogiltigt JSON-format", + "updateFailed": "{{serverName}} misslyckades ladda: {{error}}", + "installFailed": "Installation misslyckades", + "startFailed": "Start misslyckades", + "toolMenu": { + "delete": "Ta bort", + "edit": "Redigera", + "reload": "Ladda om", + "detail": "Visa detaljer" + }, + "delete": "Ta bort", + "jsonCopy": "Kopiera", + "jsonCopied": "Kopierad", + "jsonDownload": "Ladda ner", + "deleteTitle": "Bekräfta borttagning av {{mcp}}-verktyg?", + "deleteAllTitle": "Bekräfta borttagning av alla verktyg?", + "fieldTitle": "Fält", + "fieldTitleAlt": "Fält uppfyller vanligtvis de flesta behov, men om dina MCP-inställningar kräver ytterligare fält eller olika typer kan du redigera direkt i JSON-textområdet till höger för att uppfylla ditt programs krav", + "initialTimeoutAlt": "Den inledande anslutningsv äntetiden är inställd på 10 sekunder som standard, men kan ställas in på vilket som helst flyttal på 10 sekunder eller mer. Det finns ingen gräns för antalet sekunder. Det rekommenderas att justera detta värde om servern har en långsam anslutning.", + "initialTimeoutPlaceholder": "Ange Initial Timeout...", + "initialTimeoutError": "Ange ett nummer som är större än eller lika med 10", + "jsonDesc": "Ange eller klistra in MCP Server JSON i fältet", + "addArg": "Lägg till argument", + "addEnv": "Lägg till miljövariabel", + "jsonFormatError": { + "addFormat": "Konfigurationsformatfel, kontrollera och korrigera formatet", + "format": "{{mcp}} konfigurationsformatfel, kontrollera och korrigera formatet", + "nameEmpty": "Namnet kan inte vara tomt, ange ett giltigt namn", + "nameExist": "En konfiguration med namnet \"{{mcp}}\" finns redan", + "stringError": "Verktyg {{mcp}}: Fältet {{field}} måste vara en sträng", + "numberError": "Verktyg {{mcp}}: Fältet {{field}} måste vara ett nummer", + "floatError": "Verktyg {{mcp}}: Fältet {{field}} måste vara ett flyttal", + "booleanError": "Verktyg {{mcp}}: Fältet {{field}} måste ställas in på true eller false", + "arrayError": "Verktyg {{mcp}}: Fältet {{field}} måste tillhandahållas som en array", + "objectError": "Verktyg {{mcp}}: Fältet {{field}} måste tillhandahållas som ett objekt", + "optionError": "Verktyg {{mcp}}: Fältet {{field}} kan endast vara {{options}}", + "requiredError": "Verktyg {{mcp}}: Fältet {{field}} är obligatoriskt", + "jsonError": "Verktyg {{mcp}}: JSON-formatfel, kontrollera och korrigera formatet", + "toolNumberError": "Endast ett verktyg kan ställas in i redigeringsläge, ta bort andra icke-verktygsobjekt", + "enabled": "Verktyg {{mcp}}: Fältet enabled måste ställas in på true eller false", + "command": "Verktyg {{mcp}}: Fältet command måste vara en sträng", + "args": "Verktyg {{mcp}}: Fältet args måste tillhandahållas som en array", + "env": "Verktyg {{mcp}}: Fältet env måste tillhandahållas som ett objekt", + "url": "Verktyg {{mcp}}: Fältet url måste vara en sträng", + "transport": "Verktyg {{mcp}}: Fältet transport kan endast vara {{options}}", + "initialTimeout": "Verktyg {{mcp}}: Fältet initialTimeout måste vara ett flyttal", + "range": "Verktyg {{mcp}}: Fältvärdet {{field}} är utanför intervallet, kontrollera och korrigera värdet", + "minRange": "Verktyg {{mcp}}: Fältet {{field}} måste vara större än eller lika med {{value}}", + "maxRange": "Verktyg {{mcp}}: Fältet {{field}} måste vara mindre än eller lika med {{value}}" + }, + "namePlaceholder": "Ange namn...", + "commandPlaceholder": "Ange kommando...", + "argsPlaceholder": "Ange argument...", + "envKey": "Ange variabelnamn (Nyckel)...", + "envValue": "Ange variabelvärde (Värde)...", + "inputKeyError": "{{ name }} variabelnamn duplikat", + "urlPlaceholder": "Ange URL...", + "transportPlaceholder": "Välj transport...", + "providerSearchPlaceholder": "Ange sök leverantör...", + "noProviderSearchResult": "Ingen relaterad leverantör hittades", + "toogleToolAlt": "Aktivera MCP-verktyg", + "logTitle": "Kör UVX-kommando", + "logProcessing": "Bearbetar...", + "no_tool_title": "Inga MCP-servrar tillgängliga", + "no_oap_tool_message": { + "all": "Välj en OAP MCP-server att använda eller lägg till en anpassad MCP-server.", + "oap": "Välj en OAP MCP-server att använda.", + "custom": "Lägg till en anpassad MCP-server." + }, + "no_tool_message": "Lägg till en MCP-server.", + "tab": { + "all": "Alla verktyg", + "oap": "OAP-verktyg", + "custom": "Anpassade verktyg" + }, + "oapStoreLinkAlt": "Visa detaljer", + "subToolsCount": "Verktyg aktiverade: {{count}} / {{total}}", + "disabledDescription": "Inaktiverad", + "unsaved": { + "title": "Osparade ändringar", + "desc": "Du har osparade ändringar. Om du lämnar denna sida kommer ändringarna att gå förlorade. Vill du fortsätta?", + "cancel": "Avbryt ändringar", + "save": "Spara" + }, + "oauthAlert": "Bekräfta att du litar på denna anslutning: denna anslutning har inte verifierats av Dive. Du är ansvarig för alla operationer du utför med Dive.", + "reload": { + "headerBtn": "Ladda om", + "headerBtnAlt": "Ladda om och uppdatera MCP-verktyg" + }, + "oap": { + "type": { + "all": "Alla verktyg", + "base": "Visa endast Base", + "pro": "Visa endast Pro" + }, + "sort": { + "title": "Sortera", + "popular": "Populär", + "new": "Ny" + }, + "tag": "Tagg", + "no_search_data_title": "Inga MCP-verktyg hittades", + "no_search_data": "Inga sökresultat hittades, rensa sökordet eller justera filtervillkoren.", + "clear_filter": "Rensa filter", + "hint": "Högnivå MCP-servrar kräver uppgradering till Pro-versionen för installation", + "high_cost_title": "Aktivera högkostnads MCP-servrar", + "high_cost_desc": "Du har valt MCP-servrar som förbrukar många tokens. Kontrollera om din planerade användning är tillräcklig.", + "headerBtnAlt": "Lägg till / Visa OAP MCP-verktyg" + }, + "custom": { + "headerBtn": "Lägg till / Redigera konfiguration", + "headerBtnAlt": "Lägg till / Redigera anpassade verktyg", + "listAdd": "Lägg till MCP-server", + "titleAdd": "Lägg till MCP-server", + "titleEdit": "Redigera {{tool}} MCP", + "titleEditJson": "MCP-verktygsinställningar" + } + }, + "modelConfig": { + "title": "Modellinställningar", + "customInstructions": "Anpassad prompt", + "customInstructionsPlaceholder": "Ange anpassad systemprompt...", + "customInstructionsDescription": "Dessa prompter kommer att läggas till i slutet av varje begärans systemprompt", + "saveInstructions": "Spara instruktioner", + "customRulesSaved": "Anpassade instruktioner sparade", + "customRulesFailed": "Misslyckades spara anpassade instruktioner", + "modelDescription": "Modellnamn att använda", + "modelDescriptionHint": "Modellnamn att använda (Ange API-nyckel först för att se tillgängliga modeller)" + }, + "common": { + "close": "Stäng", + "confirm": "Bekräfta", + "cancel": "Avbryt", + "copy": "Kopiera", + "copySuccess": "Kopierad", + "zoomInImage": "Zooma in bild", + "copyImage": "Kopiera bild", + "copyImageUrl": "Kopiera bild-URL", + "downloadImage": "Ladda ner bild", + "login": "Logga in", + "signup": "Registrera dig", + "save": "Spara", + "signout": "Logga ut" + }, + "models": { + "title": "Modellinställningar", + "newProvider": "+ Lägg till leverantör", + "parameters": "Parameterinställningar", + "instructionsSetting": "Instruktionsinställningar", + "listTitle": "Konfigurera modellleverantör", + "optional": "(Valfritt)", + "selfOptional": "(Valfritt)", + "unSupportModelCount": "Du har valt {{count}} ej stödda modeller", + "deleteTitle": "Bekräfta borttagning av {{name}}-nyckel?", + "deleteDescription": "Denna åtgärd kan inte ångras.", + "deleteAllTitle": "Bekräfta modellborttagning?", + "deleteAllDescription": "Efter borttagning kommer inga modeller vara tillgängliga för konversation", + "deleteToast": "{{name}}-nyckel borttagen", + "deleteFailed": "Misslyckades ta bort leverantörsautentisering", + "providerMenu1": "Redigera leverantör", + "providerMenu2": "Hantera modell", + "providerMenu3": "Ta bort", + "verifying": "Verifierar API-nyckel och modell...", + "verifyingAbort": "Verifiering avbruten, försök igen senare", + "apiKeyError": "Ogiltig API-nyckel, kontrollera och ange din API-nyckel igen.", + "closeAllTitle": "Bekräfta inaktivering?", + "closeAllDescription": "Efter inaktivering kommer inga modeller vara tillgängliga för konversation", + "noModelAlertTitle": "Inga modeller tillgängliga!", + "noModelAlertDescription": "Alla valda modeller stöds inte, konversation är inte möjlig", + "selectModelPlaceHolder": "Välj modell...", + "noModelAlertOption": "Inga tillgängliga modeller", + "popupTitle": "Tillgängliga modeller", + "searchPlaceholder": "Sök modeller...", + "noResult": "Inga tillgängliga modeller", + "reloadModelList": "Ladda om", + "modelSaved": "Modeller sparade", + "modelSaveFailed": "Misslyckades spara modeller", + "parameterSaved": "Parametrar sparade", + "parameterSaveFailed": "Misslyckades spara parametrar", + "ignored": "Hoppa över verifiering för denna modell", + "unSupportModel": "Modell stöds inte", + "unToolCallsSupport": "Verktygsanrop stöds inte", + "verify": "Verifiera", + "verifyIgnore": "Ignorera", + "verifyIgnoreAlt": "Verifieringspåminnelse kommer inte längre visas", + "verifyNextTime": "Senare", + "verifyNextTimeAlt": "Kommer att fråga om verifiering nästa gång", + "verifyTitle": "! {{count}} overifierade modeller upptäckta", + "verifyDesc": "Följande modeller är inte verifierade. Vill du verifiera dem?", + "progressVerifying": "Modellverifiering pågår, vänta...", + "verifyMenu": { + "advanced": "Avancerade inställningar", + "verify": "Verifiera modell", + "ignore": "Ignorera verifiering", + "delete": "Ta bort modell" + }, + "customModelID": { + "add": "+ Anpassat modell-ID", + "title": "Anpassat modell-ID", + "placeholder": "Ange anpassat modell-ID...", + "Error": { + "empty": "Anpassat modell-ID kan inte vara tomt", + "exist": "Anpassat modell-ID finns redan" + } + }, + "copyContent": "Kopiera innehåll", + "editProviderTitle": "Redigera {{provider}}-konfiguration", + "hide": "Dölj", + "display": "Visa", + "copy": "Kopiera", + "modelSetting": "Avancerade inställningar", + "streamingModeTooltip": "Strömningsläge är när modellen svarar, den visar innehållet gradvis, istället för att visa allt på en gång. Att stänga av knappen i icke-strömningsläge kommer att vänta på att modellen genererar innehållet helt och visa allt på en gång, undvika kompatibilitetsproblem med verktygsanrop i modellen.", + "streamingModeDescription": "Kontrollera hur modellsvar visas", + "streamingModeAlert": "Påminnelse: Vissa modeller stöder endast verktygsanrop i antingen strömningsläge eller icke-strömningsläge. Det rekommenderas att helt förstå dina behov innan du justerar denna parameter.", + "customInput": "Anpassad inmatning", + "addCustomParameter": "Lägg till anpassad parameter", + "parameterName": "Parameternamn", + "parameterType": "Parametertyp", + "parameterValue": "Parametervärde", + "parameterNameDescription": "Ange namn, som temperatur", + "parameterTypeDescription": "Välj typ", + "parameterValueDescription": "Välj parametertyp först och ange sedan värdet", + "parameterNameDuplicate": "Parameternamn finns redan", + "parameterTypeInt": "Heltal", + "parameterTypeFloat": "Flyttal", + "parameterTypeString": "Sträng", + "parameterTypeIntDescription": "Tillåtet intervall 0-1M", + "parameterTypeFloatDescription": "Tillåtet intervall 0.0-1.0", + "parameterTypeStringDescription": "Ange en sträng, som medium", + "reasoningLevelDescription": "Ställ in modellens tänkandedjup", + "reasoningLevelTooltip": "Låg representerar ett snabbt svar, fokuserar på slutsatser och utan ytterligare detaljer, med direkt och enkel resonemang. Medium ger ett svar med tillräcklig logisk förklaring, som täcker nyckelinformation. Hög erbjuder ett djupt svar med strukturerad och detaljerad analys och förklaring.", + "tokenBudgetDescription": "Ställ in resonemangsvärde ({{min}}~{{max}})", + "parameterVerify": "Parameterverifiering", + "verifyErrorInfo": "Verifieringsfeldetaljer", + "verifyErrorMsg": "Modellen använde inga verktyg under verifiering, vilket kan bero på bristande stöd eller att den inte utlöstes. Därför är det inte möjligt att bekräfta om den stöder verktyg.", + "verifyStatusSuccess": "Modellverifiering lyckades, aktiverad med ursprunglig konfiguration", + "verifyStatusSuccessInPrompt": "Modellverifiering lyckades, aktiverad med MCP Prompts", + "verifyUnexpectedFailed": "Modellverifiering misslyckades, ett okänt fel uppstod, försök igen senare", + "oapUsageLimit": "Användningsgräns nådd, tillfälligt otillgänglig" + }, + "system": { + "title": "Systeminställningar", + "language": "Systemspråk", + "languageDefault": "Systemstandard", + "languageDescription": "Språk som används för att visa systemgränssnittet. Språket som används i modellen kan ändras på modellinställningssidan, detta hänvisar till språket som visas i Dive-gränssnittet", + "theme": "Mörkt läge", + "themeDescription": "Växla mellan systemstandard och mörkt läge", + "defaultInstructions": "speak in Swedish", + "autoDownload": "Automatisk nedladdning av uppdatering", + "autoDownloadDescription": "Ladda automatiskt ner den nya versionen av DIVE när användaren startar om eller klickar på \"Uppgradera\"-knappen på menysidan, den nya versionen kommer att aktiveras", + "autoLaunch": "Automatisk start", + "autoLaunchDescription": "Starta Dive AI automatiskt när systemet startar", + "minimalToTray": "Minimera till systemfältet", + "minimalToTrayDescription": "När fönstret stängs kommer programmet att minimeras till systemfältet istället för att avslutas helt", + "loginTitle": "OAP-inloggning", + "loginDescription": "Använd OpenAgentPlatform för att logga in, ingen teknisk bakgrund krävs för att enkelt ansluta LLM, AI-agenter och MCP-servrar — Upplev smarta lösningar nu!", + "personalInformationTitle": "Personlig information", + "defaultSystemPrompt": "Dive standardsystemprompt", + "defaultSystemPromptDescription": "Dive standardsystemprompt används som standardsystemprompt för chatt. Den berättar för LLM att Dive-chatt stöder KaTeX / Markdown / Mermaid etc. Denna funktion förbrukar vissa tokens, vilket kan göra svaret långsammare än prompten utan systemprompt. Å andra sidan, om den är inaktiverad, kan kvaliteten på LLM:s svar minska", + "usageAnalytics": "Gå till instrumentpanelssidan i OAP Hub för att se", + "usageAnalyticsTitle": "Användningsanalys", + "userEdit": "Gå till kontosidan i OAP Hub för att göra ändringar", + "planSectionTitle": "Aktuell plananvändning", + "subscriptionDate": "Prenumerationsdatum", + "remainingUsage": "Återstående användning", + "usageWarningTitle": "Token-användningsgräns nådd.", + "usageWarning": "Pro-plankvot återställs nästa månad, eller köp token-paket för mer användning. Grundmodeller och MCP är fortfarande tillgängliga.", + "BaseSubscriptionDate": "Utgår aldrig", + "BaseRemainingUsage": "Ingen gräns", + "BaseUsageWarning": "Basplanen inkluderar tillgång till grundmodeller och grundläggande MCP. För att använda andra modeller och MCP, uppgradera din plan från plansidan.", + "customPromptDescription": "Om du behöver ytterligare anpassade instruktioner, klicka på \"Anpassad prompt\"-funktionen nedan för att ställa in den.", + "customPromptButton": "Anpassad prompt", + "tokenPackageTitle": "Token-paketanvändning", + "tokenPackageHint": "Token-paket har inget utgångsdatum och kommer endast att användas efter att månatlig plankvot är uttömd.", + "tokenPackageRemainingUsage": "Återstående användning", + "tokenPackageWarningTitle": "Token-kvot förbrukad.", + "tokenPackageWarning": "Du kan fylla på mer token-användning på OAPhub instrumentpanelssidan.", + "skipTlsVerifyWarning": "Säkerhetsvarning: Att ignorera certifikatverifiering kan minska anslutningens säkerhet. Det rekommenderas att använda i pålitliga nätverksmiljöer." + }, + "toast": { + "copiedToClipboard": "Kopierad till urklipp", + "copyFailed": "Kopiering misslyckades", + "copiedImage": "Bild kopierad", + "downloadedImage": "Bild nedladdad" + }, + "keymap": { + "title": "Tangentbordsgenvägar", + "events": { + "chat-input_submit": "Skicka meddelande", + "chat-input_upload-file": "Ladda upp fil", + "chat-input_focus": "Fokusera inmatning", + "chat-input_paste-last-message": "Klistra in senaste meddelandet", + "chat-message_copy-last": "Kopiera senaste meddelandet", + "chat_delete": "Ta bort chatt", + "global_new-chat": "Ny chatt", + "global_toggle-sidebar": "Växla sidofält", + "global_close-layer": "Stäng fönster", + "global_toggle-keymap-modal": "Växla tangentbordsgenvägshjälp" + } + }, + "update": { + "downloading": "Laddar ner...", + "readyToInstall": "Redo att installera", + "clickToInstall": "Klicka för att installera uppdatering" + }, + "login": { + "subtitle": "Dive AI är en öppen källkod desktop-applikation som sömlöst integrerar olika stora språkmodeller som stöder funktionsanrop. Genom sitt rena och intuitiva gränssnitt kan du enkelt konversera med banbrytande AI, från dagliga frågor till professionella uppgifter, få exakta svar och göra det till din intelligenta assistent.", + "title1": "Använd dina egna förberedda modeller", + "description1": "Lämplig för avancerade AI-experter. Om du redan har din egen konfiguration redo, oavsett om det är lokalt Ollama, llama.cpp eller fjärr-LLM-API:er från Openrouter, OpenAI, Anthropic eller andra AI-företag, använd detta alternativ.", + "button1": "Gå till modellinställningar", + "title2": "Använd OpenAgentPlatform", + "description2": "OAP gör det enkelt för alla att använda de mest avancerade AI-tjänsterna, ansluta LLM, AI-agenter och MCP-servrar utan att kräva teknisk expertis. Utforska de obegränsade möjligheterna med AI och upplev smarta lösningar nu.", + "button2": "Registrera dig för OAP", + "button3": "Logga in på OAP" + }, + "InstallHostDependencies": { + "title": "Laddar ner värdberoenden...", + "retry": "Försök igen", + "stop": "Stoppa", + "tip": "Om ett fel uppstår under nedladdning, stäng detta fönster först och starta om applikationen för att ladda ner igen." + }, + "deeplink": { + "mcpInstallConfirm": "Lägg till stdio MCP-tjänst - Du kommer att lägga till MCP via följande kommando, bekräfta:" + } +} + diff --git a/src/locales/th/translation.json b/src/locales/th/translation.json new file mode 100644 index 00000000..052da7d1 --- /dev/null +++ b/src/locales/th/translation.json @@ -0,0 +1,442 @@ +{ + "header": { + "title": "Dive AI", + "openSidebar": "เปิดแถบด้านข้าง", + "closeSidebar": "ปิดแถบด้านข้าง" + }, + "chat": { + "placeholder": "ส่งข้อความ...", + "newChat": "แชทใหม่", + "newChatTooltip": "เริ่มการสนทนาใหม่", + "history": "ประวัติ", + "copyCode": "คัดลอก", + "previewCode": "คลิกเพื่อดูตัวอย่าง", + "uploadFile": "อัปโหลดไฟล์", + "send": "ส่ง", + "untitledChat": "แชทไม่มีชื่อ", + "deleteChat": "ลบแชท", + "deleteSuccess": "ลบแชทแล้ว", + "deleteFailed": "การลบล้มเหลว", + "confirmDelete": "ยืนยันการลบ", + "confirmDeleteDescription": "เมื่อลบแล้วจะไม่สามารถกู้คืนแชทได้", + "tools": { + "button": "เครื่องมือ", + "enabledHint": "เปิดใช้งานเครื่องมือ {{enabled}} รายการ", + "failedHint": "เปิดใช้งานเครื่องมือ {{enabled}} รายการ เครื่องมือ {{failed}} รายการล้มเหลว" + }, + "abort": "หยุดการสร้าง", + "retry": "ลองอีกครั้ง", + "noModelAlert": "ไม่มีโมเดลที่ใช้งานได้", + "noModelBanner": "ไม่มีโมเดลที่ใช้งานได้ กรุณาเลือกโมเดลก่อน", + "onLimit": "คุณถึงขอบเขตการใช้งานแผน {{plan}} แล้ว ไม่สามารถใช้โมเดล oap ได้", + "modelSettings": "การตั้งค่าโมเดล", + "copy": "คัดลอก", + "copied": "คัดลอกแล้ว", + "edit": "แก้ไข", + "editDescription": "การแก้ไขข้อความนี้จะสร้างคำตอบใหม่", + "cancel": "ยกเลิก", + "save": "บันทึก", + "toolCalls": "🛠 ผลลัพธ์การเรียกเครื่องมือ {{name}}", + "unsupportTools": "{{model}} ไม่รองรับการเรียกเครื่องมือ", + "dragFiles": "วางไฟล์ที่นี่เพื่อเพิ่มในแชท", + "tools-btn": { + "disableToast": "ปิดการเรียกเครื่องมือแล้ว", + "disable": "ปิดการเรียกเครื่องมือ", + "enableToast": "เปิดการเรียกเครื่องมือแล้ว", + "enable": "เปิดการเรียกเครื่องมือ" + } + }, + "welcome": { + "title": "ยินดีต้อนรับสู่ Dive AI", + "subtitle": "เริ่มการสนทนา AI ของคุณ", + "startChat": "เริ่มแชท" + }, + "setup": { + "title": "การตั้งค่าเริ่มต้น", + "subtitle": "กรุณากำหนดค่าการตั้งค่าโมเดล", + "required": "ช่องนี้จำเป็น", + "submit": "บันทึกการตั้งค่า", + "provider": "ผู้ให้บริการโมเดล", + "verify": "ตรวจสอบโมเดล", + "verifying": "กำลังตรวจสอบ...", + "verifySuccess": "ตรวจสอบโมเดลสำเร็จ", + "verifySuccessNoTool": "ตรวจสอบโมเดลสำเร็จ แต่ไม่รองรับการเรียกเครื่องมือ", + "verifyFailed": "การตรวจสอบโมเดลล้มเหลว", + "verifyError": "เกิดข้อผิดพลาดระหว่างการตรวจสอบ", + "saveSuccess": "บันทึกการตั้งค่าสำเร็จ", + "saveFailed": "การบันทึกการตั้งค่าล้มเหลว", + "back": "กลับ", + "parameters": "พารามิเตอร์", + "topPDescription": "พารามิเตอร์ Top-P ควบคุมช่วงการเลือกคำ ค่า 0 ใช้ค่าเริ่มต้น ค่าที่ต่ำกว่าจะเลือกเฉพาะคำที่มีความเป็นไปได้สูง ส่งผลให้ได้คำตอบที่อนุรักษ์นิยม ค่าที่สูงขึ้นจะขยายช่วงคำศัพท์ ส่งผลให้ได้คำตอบที่หลากหลายมากขึ้น", + "temperatureDescription": "พารามิเตอร์อุณหภูมิควบคุมความสุ่มของคำตอบ ค่า 0 ใช้ค่าเริ่มต้น ค่าที่ต่ำกว่าจะได้คำตอบที่แม่นยำและมั่นคงกว่า ค่าที่สูงขึ้นจะสร้างคำตอบที่สร้างสรรค์มากขึ้นแต่เข้มงวดน้อยกว่า" + }, + "sidebar": { + "tools": "การจัดการเครื่องมือ (MCP)", + "settings": "การตั้งค่าโมเดล", + "update": "มีการอัปเดต", + "models": "การตั้งค่าโมเดล", + "system": "การตั้งค่าระบบ", + "manageAndSettings": "การจัดการและการตั้งค่า", + "OAPhub": "OAPhub", + "signOut": "ออกจากระบบ", + "chat": { + "starredChat": "รายการโปรด", + "starChat": "เพิ่มในรายการโปรด", + "unStarChat": "ลบออกจากรายการโปรด", + "starFailed": "การเพิ่มในรายการโปรดล้มเหลว", + "renameChat": "เปลี่ยนชื่อ", + "renameFailed": "การเปลี่ยนชื่อล้มเหลว", + "deleteChat": "ลบ" + } + }, + "setting": { + "tabs": { + "Tools": "การจัดการเครื่องมือ MCP", + "Model": "ผู้ให้บริการโมเดล", + "Account": "บัญชี", + "System": "การตั้งค่าระบบ" + } + }, + "tools": { + "title": "การจัดการเครื่องมือ (MCP)", + "editConfig": "แก้ไขการกำหนดค่า", + "editConfigAlt": "แก้ไขการกำหนดค่าเซิร์ฟเวอร์ MCP", + "configTitle": "การกำหนดค่าเซิร์ฟเวอร์ MCP", + "save": "บันทึก", + "cancel": "ยกเลิก", + "saveSuccess": "บันทึกการตั้งค่าสำเร็จ", + "saveFailed": "การบันทึกการตั้งค่าล้มเหลว", + "toggleFailed": "เกิดข้อผิดพลาด", + "reloadFailed": "{{toolName}} เกิดข้อผิดพลาด การโหลดใหม่ล้มเหลว", + "reloadAllFailed": "การเรียกเครื่องมือ {{number}} รายการเกิดข้อผิดพลาด การโหลดใหม่ล้มเหลว", + "openConfigFolder": "โฟลเดอร์การกำหนดค่า", + "openConfigFolderAlt": "เปิดโฟลเดอร์การกำหนดค่า", + "fetchFailed": "การโหลดเครื่องมือล้มเหลว", + "configFetchFailed": "การโหลดการกำหนดค่าล้มเหลว", + "configSaveAborted": "การบันทึกการกำหนดค่าถูกยกเลิก", + "invalidJson": "รูปแบบ JSON ไม่ถูกต้อง", + "updateFailed": "{{serverName}} การโหลดล้มเหลว: {{error}}", + "installFailed": "การติดตั้งล้มเหลว", + "startFailed": "การเริ่มต้นล้มเหลว", + "toolMenu": { + "delete": "ลบ", + "edit": "แก้ไข", + "reload": "โหลดใหม่", + "detail": "ดูรายละเอียด" + }, + "delete": "ลบ", + "jsonCopy": "คัดลอก", + "jsonCopied": "คัดลอกแล้ว", + "jsonDownload": "ดาวน์โหลด", + "deleteTitle": "ยืนยันการลบเครื่องมือ {{mcp}}?", + "deleteAllTitle": "ยืนยันการลบเครื่องมือทั้งหมด?", + "fieldTitle": "ฟิลด์", + "fieldTitleAlt": "ฟิลด์มักจะตอบสนองความต้องการส่วนใหญ่ แต่หากการตั้งค่า MCP ของคุณต้องการฟิลด์เพิ่มเติมหรือประเภทที่แตกต่างกัน คุณสามารถแก้ไขโดยตรงในพื้นที่ข้อความ JSON ทางด้านขวาเพื่อตอบสนองความต้องการของโปรแกรมของคุณ", + "initialTimeoutAlt": "เวลารอการเชื่อมต่อเริ่มต้นถูกตั้งค่าเป็น 10 วินาทีโดยค่าเริ่มต้น แต่สามารถตั้งค่าเป็นตัวเลขทศนิยมใดๆ ที่ 10 วินาทีขึ้นไป ไม่มีข้อจำกัดจำนวนวินาที แนะนำให้ปรับค่านี้หากเซิร์ฟเวอร์มีการเชื่อมต่อช้า", + "initialTimeoutPlaceholder": "ป้อน Initial Timeout...", + "initialTimeoutError": "กรุณาป้อนตัวเลขที่มากกว่าหรือเท่ากับ 10", + "jsonDesc": "กรุณาป้อนหรือวาง JSON ของเซิร์ฟเวอร์ MCP ในฟิลด์", + "addArg": "เพิ่มอาร์กิวเมนต์", + "addEnv": "เพิ่มตัวแปรสภาพแวดล้อม", + "jsonFormatError": { + "addFormat": "ข้อผิดพลาดรูปแบบการกำหนดค่า กรุณาตรวจสอบและแก้ไขรูปแบบ", + "format": "ข้อผิดพลาดรูปแบบการกำหนดค่า {{mcp}} กรุณาตรวจสอบและแก้ไขรูปแบบ", + "nameEmpty": "ชื่อต้องไม่ว่างเปล่า กรุณาป้อนชื่อที่ถูกต้อง", + "nameExist": "การกำหนดค่าที่มีชื่อ \"{{mcp}}\" มีอยู่แล้ว", + "stringError": "เครื่องมือ {{mcp}}: ฟิลด์ {{field}} ต้องเป็นสตริง", + "numberError": "เครื่องมือ {{mcp}}: ฟิลด์ {{field}} ต้องเป็นตัวเลข", + "floatError": "เครื่องมือ {{mcp}}: ฟิลด์ {{field}} ต้องเป็นเลขทศนิยม", + "booleanError": "เครื่องมือ {{mcp}}: ฟิลด์ {{field}} ต้องตั้งค่าเป็น true หรือ false", + "arrayError": "เครื่องมือ {{mcp}}: ฟิลด์ {{field}} ต้องจัดเตรียมเป็นอาร์เรย์", + "objectError": "เครื่องมือ {{mcp}}: ฟิลด์ {{field}} ต้องจัดเตรียมเป็นออบเจ็กต์", + "optionError": "เครื่องมือ {{mcp}}: ฟิลด์ {{field}} สามารถเป็นได้เฉพาะ {{options}}", + "requiredError": "เครื่องมือ {{mcp}}: ฟิลด์ {{field}} จำเป็น", + "jsonError": "เครื่องมือ {{mcp}}: ข้อผิดพลาดรูปแบบ JSON กรุณาตรวจสอบและแก้ไขรูปแบบ", + "toolNumberError": "สามารถตั้งค่าเครื่องมือได้เพียงหนึ่งรายการในโหมดแก้ไข กรุณาลบรายการที่ไม่ใช่เครื่องมืออื่นๆ", + "enabled": "เครื่องมือ {{mcp}}: ฟิลด์ enabled ต้องตั้งค่าเป็น true หรือ false", + "command": "เครื่องมือ {{mcp}}: ฟิลด์ command ต้องเป็นสตริง", + "args": "เครื่องมือ {{mcp}}: ฟิลด์ args ต้องจัดเตรียมเป็นอาร์เรย์", + "env": "เครื่องมือ {{mcp}}: ฟิลด์ env ต้องจัดเตรียมเป็นออบเจ็กต์", + "url": "เครื่องมือ {{mcp}}: ฟิลด์ url ต้องเป็นสตริง", + "transport": "เครื่องมือ {{mcp}}: ฟิลด์ transport สามารถเป็นได้เฉพาะ {{options}}", + "initialTimeout": "เครื่องมือ {{mcp}}: ฟิลด์ initialTimeout ต้องเป็นเลขทศนิยม", + "range": "เครื่องมือ {{mcp}}: ค่าฟิลด์ {{field}} อยู่นอกช่วง กรุณาตรวจสอบและแก้ไขค่า", + "minRange": "เครื่องมือ {{mcp}}: ฟิลด์ {{field}} ต้องมากกว่าหรือเท่ากับ {{value}}", + "maxRange": "เครื่องมือ {{mcp}}: ฟิลด์ {{field}} ต้องน้อยกว่าหรือเท่ากับ {{value}}" + }, + "namePlaceholder": "ป้อนชื่อ...", + "commandPlaceholder": "ป้อนคำสั่ง...", + "argsPlaceholder": "ป้อนอาร์กิวเมนต์...", + "envKey": "ป้อนชื่อตัวแปร (Key)...", + "envValue": "ป้อนค่าตัวแปร (Value)...", + "inputKeyError": "ชื่อตัวแปร {{ name }} ซ้ำ", + "urlPlaceholder": "ป้อน URL...", + "transportPlaceholder": "เลือกการขนส่ง...", + "providerSearchPlaceholder": "ป้อนการค้นหาผู้ให้บริการ...", + "noProviderSearchResult": "ไม่พบผู้ให้บริการที่เกี่ยวข้อง", + "toogleToolAlt": "เปิดใช้งานเครื่องมือ MCP", + "logTitle": "รันคำสั่ง UVX", + "logProcessing": "กำลังประมวลผล...", + "no_tool_title": "ไม่มีเซิร์ฟเวอร์ MCP ที่ใช้งานได้", + "no_oap_tool_message": { + "all": "กรุณาเลือกเซิร์ฟเวอร์ MCP OAP เพื่อใช้งาน หรือเพิ่มเซิร์ฟเวอร์ MCP กำหนดเอง", + "oap": "กรุณาเลือกเซิร์ฟเวอร์ MCP OAP เพื่อใช้งาน", + "custom": "กรุณาเพิ่มเซิร์ฟเวอร์ MCP กำหนดเอง" + }, + "no_tool_message": "กรุณาเพิ่มเซิร์ฟเวอร์ MCP", + "tab": { + "all": "เครื่องมือทั้งหมด", + "oap": "เครื่องมือ OAP", + "custom": "เครื่องมือกำหนดเอง" + }, + "oapStoreLinkAlt": "ดูรายละเอียด", + "subToolsCount": "เครื่องมือที่เปิดใช้งาน: {{count}} / {{total}}", + "disabledDescription": "ปิดการใช้งาน", + "unsaved": { + "title": "การเปลี่ยนแปลงที่ไม่ได้บันทึก", + "desc": "คุณมีการเปลี่ยนแปลงที่ไม่ได้บันทึก หากคุณออกจากหน้านี้ การเปลี่ยนแปลงจะสูญหาย คุณต้องการดำเนินการต่อหรือไม่?", + "cancel": "ยกเลิกการเปลี่ยนแปลง", + "save": "บันทึก" + }, + "oauthAlert": "กรุณายืนยันว่าคุณเชื่อถือตัวเชื่อมต่อนี้: ตัวเชื่อมต่อนี้ไม่ได้รับการตรวจสอบโดย Dive คุณมีความรับผิดชอบสำหรับการดำเนินการทั้งหมดที่คุณทำกับ Dive", + "reload": { + "headerBtn": "โหลดใหม่", + "headerBtnAlt": "โหลดใหม่และอัปเดตเครื่องมือ MCP" + }, + "oap": { + "type": { + "all": "เครื่องมือทั้งหมด", + "base": "แสดงเฉพาะ Base", + "pro": "แสดงเฉพาะ Pro" + }, + "sort": { + "title": "เรียงลำดับ", + "popular": "ยอดนิยม", + "new": "ใหม่" + }, + "tag": "แท็ก", + "no_search_data_title": "ไม่พบเครื่องมือ MCP", + "no_search_data": "ไม่พบผลการค้นหา กรุณาล้างคำค้นหาหรือปรับเงื่อนไขการกรอง", + "clear_filter": "ล้างตัวกรอง", + "hint": "เซิร์ฟเวอร์ MCP ระดับสูงต้องอัปเกรดเป็นเวอร์ชัน Pro เพื่อติดตั้ง", + "high_cost_title": "เปิดใช้งานเซิร์ฟเวอร์ MCP ที่มีค่าใช้จ่ายสูง", + "high_cost_desc": "คุณเลือกเซิร์ฟเวอร์ MCP ที่ใช้โทเค็นจำนวนมาก กรุณาตรวจสอบว่าการใช้งานแผนของคุณเพียงพอหรือไม่", + "headerBtnAlt": "เพิ่ม / ดูเครื่องมือ MCP OAP" + }, + "custom": { + "headerBtn": "เพิ่ม / แก้ไขการกำหนดค่า", + "headerBtnAlt": "เพิ่ม / แก้ไขเครื่องมือกำหนดเอง", + "listAdd": "เพิ่มเซิร์ฟเวอร์ MCP", + "titleAdd": "เพิ่มเซิร์ฟเวอร์ MCP", + "titleEdit": "แก้ไข {{tool}} MCP", + "titleEditJson": "การตั้งค่าเครื่องมือ MCP" + } + }, + "modelConfig": { + "title": "การตั้งค่าโมเดล", + "customInstructions": "พรอมต์กำหนดเอง", + "customInstructionsPlaceholder": "ป้อนพรอมต์ระบบกำหนดเอง...", + "customInstructionsDescription": "พรอมต์เหล่านี้จะถูกเพิ่มที่ท้ายพรอมต์ระบบของแต่ละคำขอ", + "saveInstructions": "บันทึกคำแนะนำ", + "customRulesSaved": "บันทึกคำแนะนำกำหนดเองแล้ว", + "customRulesFailed": "การบันทึกคำแนะนำกำหนดเองล้มเหลว", + "modelDescription": "ชื่อโมเดลที่จะใช้", + "modelDescriptionHint": "ชื่อโมเดลที่จะใช้ (กรุณาป้อน API Key ก่อนเพื่อดูโมเดลที่ใช้งานได้)" + }, + "common": { + "close": "ปิด", + "confirm": "ยืนยัน", + "cancel": "ยกเลิก", + "copy": "คัดลอก", + "copySuccess": "คัดลอกแล้ว", + "zoomInImage": "ขยายภาพ", + "copyImage": "คัดลอกภาพ", + "copyImageUrl": "คัดลอก URL ภาพ", + "downloadImage": "ดาวน์โหลดภาพ", + "login": "เข้าสู่ระบบ", + "signup": "สมัครสมาชิก", + "save": "บันทึก", + "signout": "ออกจากระบบ" + }, + "models": { + "title": "การตั้งค่าโมเดล", + "newProvider": "+ เพิ่มผู้ให้บริการ", + "parameters": "การตั้งค่าพารามิเตอร์", + "instructionsSetting": "การตั้งค่าคำแนะนำ", + "listTitle": "กำหนดค่าผู้ให้บริการโมเดล", + "optional": "(ไม่บังคับ)", + "selfOptional": "(ไม่บังคับ)", + "unSupportModelCount": "คุณเลือกโมเดลที่ไม่รองรับ {{count}} รายการ", + "deleteTitle": "ยืนยันการลบ Key {{name}}?", + "deleteDescription": "การกระทำนี้ไม่สามารถยกเลิกได้", + "deleteAllTitle": "ยืนยันการลบโมเดล?", + "deleteAllDescription": "หลังจากลบแล้วจะไม่มีโมเดลที่ใช้งานได้สำหรับการสนทนา", + "deleteToast": "ลบ Key {{name}} แล้ว", + "deleteFailed": "การลบการตรวจสอบสิทธิ์ผู้ให้บริการล้มเหลว", + "providerMenu1": "แก้ไขผู้ให้บริการ", + "providerMenu2": "จัดการโมเดล", + "providerMenu3": "ลบ", + "verifying": "กำลังตรวจสอบ API Key และโมเดล...", + "verifyingAbort": "การตรวจสอบถูกยกเลิก กรุณาลองอีกครั้งในภายหลัง", + "apiKeyError": "API Key ไม่ถูกต้อง กรุณาตรวจสอบและป้อน API Key ของคุณอีกครั้ง", + "closeAllTitle": "ยืนยันการปิดใช้งาน?", + "closeAllDescription": "หลังจากปิดใช้งานแล้วจะไม่มีโมเดลที่ใช้งานได้สำหรับการสนทนา", + "noModelAlertTitle": "ไม่มีโมเดลที่ใช้งานได้!", + "noModelAlertDescription": "โมเดลที่เลือกทั้งหมดไม่รองรับ ไม่สามารถสนทนาได้", + "selectModelPlaceHolder": "เลือกโมเดล...", + "noModelAlertOption": "ไม่มีโมเดลที่ใช้งานได้", + "popupTitle": "โมเดลที่ใช้งานได้", + "searchPlaceholder": "ค้นหาโมเดล...", + "noResult": "ไม่มีโมเดลที่ใช้งานได้", + "reloadModelList": "โหลดใหม่", + "modelSaved": "บันทึกโมเดลแล้ว", + "modelSaveFailed": "การบันทึกโมเดลล้มเหลว", + "parameterSaved": "บันทึกพารามิเตอร์แล้ว", + "parameterSaveFailed": "การบันทึกพารามิเตอร์ล้มเหลว", + "ignored": "ข้ามการตรวจสอบสำหรับโมเดลนี้", + "unSupportModel": "โมเดลไม่รองรับ", + "unToolCallsSupport": "ไม่รองรับการเรียกเครื่องมือ", + "verify": "ตรวจสอบ", + "verifyIgnore": "เพิกเฉย", + "verifyIgnoreAlt": "จะไม่แสดงการแจ้งเตือนการตรวจสอบอีกต่อไป", + "verifyNextTime": "ภายหลัง", + "verifyNextTimeAlt": "จะขอให้ตรวจสอบในครั้งถัดไป", + "verifyTitle": "! ตรวจพบโมเดลที่ยังไม่ได้ตรวจสอบ {{count}} รายการ", + "verifyDesc": "โมเดลต่อไปนี้ยังไม่ได้รับการตรวจสอบ คุณต้องการตรวจสอบหรือไม่?", + "progressVerifying": "กำลังตรวจสอบโมเดล กรุณารอสักครู่...", + "verifyMenu": { + "advanced": "การตั้งค่าขั้นสูง", + "verify": "ตรวจสอบโมเดล", + "ignore": "เพิกเฉยการตรวจสอบ", + "delete": "ลบโมเดล" + }, + "customModelID": { + "add": "+ ID โมเดลกำหนดเอง", + "title": "ID โมเดลกำหนดเอง", + "placeholder": "ป้อน ID โมเดลกำหนดเอง...", + "Error": { + "empty": "ID โมเดลกำหนดเองต้องไม่ว่างเปล่า", + "exist": "ID โมเดลกำหนดเองมีอยู่แล้ว" + } + }, + "copyContent": "คัดลอกเนื้อหา", + "editProviderTitle": "แก้ไขการกำหนดค่า {{provider}}", + "hide": "ซ่อน", + "display": "แสดง", + "copy": "คัดลอก", + "modelSetting": "การตั้งค่าขั้นสูง", + "streamingModeTooltip": "โหมดสตรีมมิงคือเมื่อโมเดลตอบกลับ จะแสดงเนื้อหาทีละน้อย แทนที่จะแสดงทั้งหมดพร้อมกัน การปิดปุ่มในโหมดไม่สตรีมมิงจะรอให้โมเดลสร้างเนื้อหาทั้งหมดและแสดงทั้งหมดพร้อมกัน หลีกเลี่ยงปัญหาความเข้ากันได้กับการเรียกเครื่องมือในโมเดล", + "streamingModeDescription": "ควบคุมวิธีการแสดงการตอบกลับของโมเดล", + "streamingModeAlert": "การแจ้งเตือน: บางโมเดลรองรับการเรียกเครื่องมือเฉพาะในโหมดสตรีมมิงหรือโหมดไม่สตรีมมิงเท่านั้น แนะนำให้เข้าใจความต้องการของคุณอย่างถ่องแท้ก่อนปรับพารามิเตอร์นี้", + "customInput": "การป้อนข้อมูลกำหนดเอง", + "addCustomParameter": "เพิ่มพารามิเตอร์กำหนดเอง", + "parameterName": "ชื่อพารามิเตอร์", + "parameterType": "ประเภทพารามิเตอร์", + "parameterValue": "ค่าพารามิเตอร์", + "parameterNameDescription": "ป้อนชื่อ เช่น temperature", + "parameterTypeDescription": "เลือกประเภท", + "parameterValueDescription": "กรุณาเลือกประเภทพารามิเตอร์ก่อนแล้วจึงป้อนค่า", + "parameterNameDuplicate": "ชื่อพารามิเตอร์มีอยู่แล้ว", + "parameterTypeInt": "จำนวนเต็ม", + "parameterTypeFloat": "เลขทศนิยม", + "parameterTypeString": "สตริง", + "parameterTypeIntDescription": "ช่วงที่อนุญาต 0-1M", + "parameterTypeFloatDescription": "ช่วงที่อนุญาต 0.0-1.0", + "parameterTypeStringDescription": "กรุณาป้อนสตริง เช่น medium", + "reasoningLevelDescription": "ตั้งค่าความลึกการคิดของโมเดล", + "reasoningLevelTooltip": "ต่ำหมายถึงการตอบกลับอย่างรวดเร็ว เน้นที่ข้อสรุปและไม่มีรายละเอียดเพิ่มเติม ด้วยการใช้เหตุผลที่ตรงไปตรงมาและเรียบง่าย กลางให้คำตอบที่มีคำอธิบายเชิงตรรกะเพียงพอ ครอบคลุมข้อมูลสำคัญ สูงให้คำตอบเชิงลึกพร้อมการวิเคราะห์และคำอธิบายที่มีโครงสร้างและละเอียด", + "tokenBudgetDescription": "ตั้งค่าการใช้เหตุผล ({{min}}~{{max}})", + "parameterVerify": "การตรวจสอบพารามิเตอร์", + "verifyErrorInfo": "รายละเอียดข้อผิดพลาดการตรวจสอบ", + "verifyErrorMsg": "โมเดลไม่ได้ใช้เครื่องมือใดๆ ระหว่างการตรวจสอบ ซึ่งอาจเป็นเพราะการขาดการสนับสนุนหรือไม่ได้ถูกทริกเกอร์ ดังนั้นจึงไม่สามารถยืนยันได้ว่ารองรับเครื่องมือหรือไม่", + "verifyStatusSuccess": "การตรวจสอบโมเดลสำเร็จ เปิดใช้งานด้วยการกำหนดค่าเดิม", + "verifyStatusSuccessInPrompt": "การตรวจสอบโมเดลสำเร็จ เปิดใช้งานด้วย MCP Prompts", + "verifyUnexpectedFailed": "การตรวจสอบโมเดลล้มเหลว เกิดข้อผิดพลาดที่ไม่ทราบสาเหตุ กรุณาลองอีกครั้งในภายหลัง", + "oapUsageLimit": "ถึงขีดจำกัดการใช้งาน ไม่สามารถใช้งานได้ชั่วคราว" + }, + "system": { + "title": "การตั้งค่าระบบ", + "language": "ภาษาของระบบ", + "languageDefault": "ค่าเริ่มต้นของระบบ", + "languageDescription": "ภาษาที่ใช้แสดงอินเทอร์เฟซระบบ ภาษาที่ใช้ในโมเดลสามารถเปลี่ยนได้ในหน้าการตั้งค่าโมเดล นี่หมายถึงภาษาที่แสดงในอินเทอร์เฟซ Dive", + "theme": "โหมดมืด", + "themeDescription": "สลับระหว่างค่าเริ่มต้นของระบบและโหมดมืด", + "defaultInstructions": "speak in Thai", + "autoDownload": "ดาวน์โหลดการอัปเดตอัตโนมัติ", + "autoDownloadDescription": "ดาวน์โหลดเวอร์ชันใหม่ของ DIVE โดยอัตโนมัติเมื่อผู้ใช้รีสตาร์ทหรือคลิกปุ่ม \"อัปเกรด\" ในหน้าเมนู เวอร์ชันใหม่จะถูกเปิดใช้งาน", + "autoLaunch": "เปิดอัตโนมัติ", + "autoLaunchDescription": "เปิด Dive AI โดยอัตโนมัติเมื่อระบบเริ่มทำงาน", + "minimalToTray": "ย่อเก็บไว้ในถาด", + "minimalToTrayDescription": "เมื่อปิดหน้าต่าง โปรแกรมจะถูกย่อเก็บไว้ในถาดระบบแทนที่จะออกจากโปรแกรมโดยสมบูรณ์", + "loginTitle": "เข้าสู่ระบบ OAP", + "loginDescription": "ใช้ OpenAgentPlatform เพื่อเข้าสู่ระบบ ไม่จำเป็นต้องมีพื้นฐานทางเทคนิคเพื่อเชื่อมต่อ LLM, AI Agents และ MCP Servers ได้อย่างง่ายดาย — สัมผัสโซลูชันอัจฉริยะเดี๋ยวนี้!", + "personalInformationTitle": "ข้อมูลส่วนบุคคล", + "defaultSystemPrompt": "พรอมต์ระบบเริ่มต้นของ Dive", + "defaultSystemPromptDescription": "พรอมต์ระบบเริ่มต้นของ Dive ถูกใช้เป็นพรอมต์ระบบเริ่มต้นสำหรับการแชท มันบอก LLM ว่าการแชท Dive รองรับ KaTeX / Markdown / Mermaid เป็นต้น คุณสมบัตินี้ใช้โทเค็นบางตัว ซึ่งอาจทำให้การตอบกลับช้ากว่าพรอมต์ที่ไม่มีพรอมต์ระบบ ในทางกลับกัน หากถูกปิดใช้งาน คุณภาพการตอบกลับของ LLM อาจลดลง", + "usageAnalytics": "ไปที่หน้า Dashboard ใน OAP Hub เพื่อดู", + "usageAnalyticsTitle": "การวิเคราะห์การใช้งาน", + "userEdit": "ไปที่หน้าบัญชีใน OAP Hub เพื่อทำการเปลี่ยนแปลง", + "planSectionTitle": "การใช้งานแผนปัจจุบัน", + "subscriptionDate": "วันที่สมัครสมาชิก", + "remainingUsage": "การใช้งานที่เหลือ", + "usageWarningTitle": "ถึงขีดจำกัดการใช้งานโทเค็นแล้ว", + "usageWarning": "โควต้าแผน Pro จะรีเซ็ตเดือนหน้า หรือซื้อแพ็คเกจโทเค็นเพื่อการใช้งานเพิ่มเติม โมเดลพื้นฐานและ MCP ยังคงใช้งานได้", + "BaseSubscriptionDate": "ไม่มีวันหมดอายุ", + "BaseRemainingUsage": "ไม่มีขีดจำกัด", + "BaseUsageWarning": "แผน Base รวมการเข้าถึงโมเดลพื้นฐานและ MCP พื้นฐาน หากต้องการใช้โมเดลและ MCP อื่นๆ กรุณาอัปเกรดแผนของคุณจากหน้าแผน", + "customPromptDescription": "หากคุณต้องการคำแนะนำกำหนดเองเพิ่มเติม กรุณาคลิกฟังก์ชัน \"พรอมต์กำหนดเอง\" ด้านล่างเพื่อตั้งค่า", + "customPromptButton": "พรอมต์กำหนดเอง", + "tokenPackageTitle": "การใช้งานแพ็คเกจโทเค็น", + "tokenPackageHint": "แพ็คเกจโทเค็นไม่มีวันหมดอายุและจะถูกใช้หลังจากโควต้าแผนรายเดือนหมดเท่านั้น", + "tokenPackageRemainingUsage": "การใช้งานที่เหลือ", + "tokenPackageWarningTitle": "โควต้าโทเค็นหมดแล้ว", + "tokenPackageWarning": "คุณสามารถเติมการใช้งานโทเค็นเพิ่มเติมได้ที่ OAPhub หน้า Dashboard", + "skipTlsVerifyWarning": "คำเตือนด้านความปลอดภัย: การเพิกเฉยการตรวจสอบใบรับรองอาจลดความปลอดภัยในการเชื่อมต่อ แนะนำให้ใช้ในสภาพแวดล้อมเครือข่ายที่เชื่อถือได้" + }, + "toast": { + "copiedToClipboard": "คัดลอกไปยังคลิปบอร์ดแล้ว", + "copyFailed": "การคัดลอกล้มเหลว", + "copiedImage": "คัดลอกภาพแล้ว", + "downloadedImage": "ดาวน์โหลดภาพแล้ว" + }, + "keymap": { + "title": "ปุ่มลัดคีย์บอร์ด", + "events": { + "chat-input_submit": "ส่งข้อความ", + "chat-input_upload-file": "อัปโหลดไฟล์", + "chat-input_focus": "โฟกัสการป้อนข้อมูล", + "chat-input_paste-last-message": "วางข้อความล่าสุด", + "chat-message_copy-last": "คัดลอกข้อความล่าสุด", + "chat_delete": "ลบแชท", + "global_new-chat": "แชทใหม่", + "global_toggle-sidebar": "สลับแถบด้านข้าง", + "global_close-layer": "ปิดหน้าต่าง", + "global_toggle-keymap-modal": "สลับความช่วยเหลือปุ่มลัด" + } + }, + "update": { + "downloading": "กำลังดาวน์โหลด...", + "readyToInstall": "พร้อมติดตั้ง", + "clickToInstall": "คลิกเพื่อติดตั้งการอัปเดต" + }, + "login": { + "subtitle": "Dive AI เป็นแอปพลิเคชันเดสก์ท็อปโอเพนซอร์สที่รวมโมเดลภาษาขนาดใหญ่ต่างๆ ที่รองรับการเรียกฟังก์ชันอย่างราบรื่น ผ่านอินเทอร์เฟซที่สะอาดและใช้งานง่าย คุณสามารถสนทนากับ AI ที่ล้ำสมัยได้อย่างง่ายดาย ตั้งแต่คำถามในชีวิตประจำวันไปจนถึงงานระดับมืออาชีพ รับคำตอบที่แม่นยำและทำให้เป็นผู้ช่วยอัจฉริยะของคุณ", + "title1": "ใช้โมเดลที่คุณเตรียมไว้เอง", + "description1": "เหมาะสำหรับผู้เชี่ยวชาญ AI ระดับสูง หากคุณมีการกำหนดค่าของคุณเองพร้อมแล้ว ไม่ว่าจะเป็น Ollama ในเครื่อง, llama.cpp หรือ API LLM ระยะไกลจาก Openrouter, OpenAI, Anthropic หรือบริษัท AI อื่นๆ กรุณาใช้ตัวเลือกนี้", + "button1": "ไปที่การตั้งค่าโมเดล", + "title2": "ใช้ OpenAgentPlatform", + "description2": "OAP ทำให้ทุกคนสามารถใช้บริการ AI ที่ทันสมัยที่สุดได้อย่างง่ายดาย เชื่อมต่อ LLM, AI Agents และ MCP Servers โดยไม่ต้องมีความเชี่ยวชาญทางเทคนิค สำรวจความเป็นไปได้ไร้ขีดจำกัดของ AI และสัมผัสโซลูชันอัจฉริยะเดี๋ยวนี้", + "button2": "ลงทะเบียน OAP", + "button3": "เข้าสู่ระบบ OAP" + }, + "InstallHostDependencies": { + "title": "กำลังดาวน์โหลด Dependencies ของโฮสต์...", + "retry": "ลองอีกครั้ง", + "stop": "หยุด", + "tip": "หากเกิดข้อผิดพลาดระหว่างการดาวน์โหลด กรุณาปิดหน้าต่างนี้ก่อนและรีสตาร์ทแอปพลิเคชันเพื่อดาวน์โหลดอีกครั้ง" + }, + "deeplink": { + "mcpInstallConfirm": "เพิ่มบริการ MCP stdio - คุณจะเพิ่ม MCP ผ่านคำสั่งต่อไปนี้ กรุณายืนยัน:" + } +} + diff --git a/src/locales/tr/translation.json b/src/locales/tr/translation.json new file mode 100644 index 00000000..17c336a1 --- /dev/null +++ b/src/locales/tr/translation.json @@ -0,0 +1,442 @@ +{ + "header": { + "title": "Dive AI", + "openSidebar": "Kenar çubuğunu aç", + "closeSidebar": "Kenar çubuğunu kapat" + }, + "chat": { + "placeholder": "Mesaj gönder...", + "newChat": "Yeni Sohbet", + "newChatTooltip": "Yeni bir konuşma başlat", + "history": "Geçmiş", + "copyCode": "Kopyala", + "previewCode": "Önizlemek için tıklayın", + "uploadFile": "Dosya Yükle", + "send": "Gönder", + "untitledChat": "Başlıksız Sohbet", + "deleteChat": "Sohbeti Sil", + "deleteSuccess": "Sohbet silindi", + "deleteFailed": "Silme başarısız", + "confirmDelete": "Silmeyi Onayla", + "confirmDeleteDescription": "Silindikten sonra sohbet kurtarılamaz.", + "tools": { + "button": "Araçlar", + "enabledHint": "{{enabled}} araç etkinleştirildi", + "failedHint": "{{enabled}} araç etkinleştirildi, {{failed}} araç başarısız oldu" + }, + "abort": "Oluşturmayı Durdur", + "retry": "Yeniden Dene", + "noModelAlert": "Kullanılabilir model yok", + "noModelBanner": "Kullanılabilir model yok, lütfen önce bir model seçin", + "onLimit": "{{plan}} planı kullanım limitine ulaştınız, oap modelleri kullanılamaz", + "modelSettings": "Model Ayarları", + "copy": "Kopyala", + "copied": "Kopyalandı", + "edit": "Düzenle", + "editDescription": "Bu mesajı düzenlemek yeni bir yanıt oluşturacak", + "cancel": "İptal", + "save": "Kaydet", + "toolCalls": "🛠 {{name}} Araç Çağrısı Sonucu", + "unsupportTools": "{{model}} Araç Çağrılarını desteklemiyor", + "dragFiles": "Sohbete eklemek için dosyaları buraya bırakın", + "tools-btn": { + "disableToast": "Araç Çağrıları devre dışı bırakıldı", + "disable": "Araç Çağrılarını Devre Dışı Bırak", + "enableToast": "Araç Çağrıları etkinleştirildi", + "enable": "Araç Çağrılarını Etkinleştir" + } + }, + "welcome": { + "title": "Dive AI'ya Hoş Geldiniz", + "subtitle": "AI konuşmanızı başlatın", + "startChat": "Sohbeti Başlat" + }, + "setup": { + "title": "İlk Kurulum", + "subtitle": "Lütfen model ayarlarını yapılandırın", + "required": "Bu alan zorunludur", + "submit": "Ayarları Kaydet", + "provider": "Model Sağlayıcısı", + "verify": "Modeli Doğrula", + "verifying": "Doğrulanıyor...", + "verifySuccess": "Model doğrulama başarılı", + "verifySuccessNoTool": "Model doğrulama başarılı, ancak Araç Çağrılarını desteklemiyor", + "verifyFailed": "Model doğrulama başarısız", + "verifyError": "Doğrulama sırasında hata oluştu", + "saveSuccess": "Ayarlar başarıyla kaydedildi", + "saveFailed": "Ayarları kaydetme başarısız", + "back": "Geri", + "parameters": "Parametreler", + "topPDescription": "Top-P parametresi kelime seçim aralığını kontrol eder. 0 değeri varsayılan değeri kullanır; düşük değerler sadece yüksek olasılıklı kelimeleri seçer ve muhafazakar yanıtlar verir; yüksek değerler kelime dağarcığı aralığını genişletir ve daha çeşitli yanıtlar verir.", + "temperatureDescription": "Sıcaklık parametresi yanıt rastgeleliğini kontrol eder. 0 değeri varsayılan değeri kullanır; düşük değerler daha hassas ve istikrarlı yanıtlar üretir; yüksek değerler daha yaratıcı ancak daha az titiz yanıtlar üretir." + }, + "sidebar": { + "tools": "Araç Yönetimi (MCP)", + "settings": "Model Ayarları", + "update": "Güncelleme mevcut", + "models": "Model Ayarları", + "system": "Sistem Ayarları", + "manageAndSettings": "Yönetim ve Ayarlar", + "OAPhub": "OAPhub", + "signOut": "Çıkış Yap", + "chat": { + "starredChat": "Favoriler", + "starChat": "Favorilere Ekle", + "unStarChat": "Favorilerden Çıkar", + "starFailed": "Favorilere ekleme başarısız", + "renameChat": "Yeniden Adlandır", + "renameFailed": "Yeniden adlandırma başarısız", + "deleteChat": "Sil" + } + }, + "setting": { + "tabs": { + "Tools": "MCP Araç Yönetimi", + "Model": "Model sağlayıcısı", + "Account": "Hesap", + "System": "Sistem Ayarları" + } + }, + "tools": { + "title": "Araç Yönetimi (MCP)", + "editConfig": "Yapılandırmayı Düzenle", + "editConfigAlt": "MCP Sunucu Yapılandırmasını Düzenle", + "configTitle": "MCP Sunucu Yapılandırması", + "save": "Kaydet", + "cancel": "İptal", + "saveSuccess": "Ayarlar başarıyla kaydedildi", + "saveFailed": "Ayarları kaydetme başarısız", + "toggleFailed": "Bir hata oluştu", + "reloadFailed": "{{toolName}} bir hata oluştu, yeniden yükleme başarısız", + "reloadAllFailed": "{{number}} araç çağrısı bir hata oluştu, yeniden yükleme başarısız", + "openConfigFolder": "Yapılandırma Klasörü", + "openConfigFolderAlt": "Yapılandırma Klasörünü Aç", + "fetchFailed": "Araçları yükleme başarısız", + "configFetchFailed": "Yapılandırmayı yükleme başarısız", + "configSaveAborted": "Yapılandırma kaydetme iptal edildi", + "invalidJson": "Geçersiz JSON formatı", + "updateFailed": "{{serverName}} yükleme başarısız: {{error}}", + "installFailed": "Kurulum başarısız", + "startFailed": "Başlatma başarısız", + "toolMenu": { + "delete": "Sil", + "edit": "Düzenle", + "reload": "Yeniden Yükle", + "detail": "Detayları Görüntüle" + }, + "delete": "Sil", + "jsonCopy": "Kopyala", + "jsonCopied": "Kopyalandı", + "jsonDownload": "İndir", + "deleteTitle": "{{mcp}} aracını silmeyi onayla?", + "deleteAllTitle": "Tüm araçları silmeyi onayla?", + "fieldTitle": "Alan", + "fieldTitleAlt": "Alanlar genellikle çoğu ihtiyacı karşılar, ancak MCP ayarlarınız ek alanlar veya farklı türler gerektiriyorsa, programınızın gereksinimlerini karşılamak için sağdaki JSON metin alanında doğrudan düzenleyebilirsiniz", + "initialTimeoutAlt": "İlk bağlantı bekleme süresi varsayılan olarak 10 saniye olarak ayarlanmıştır, ancak 10 saniye veya daha fazla herhangi bir ondalık sayıya ayarlanabilir. Saniye sayısında sınır yoktur. Sunucunun bağlantısı yavaşsa bu değeri ayarlamanız önerilir.", + "initialTimeoutPlaceholder": "İlk Zaman Aşımını Girin...", + "initialTimeoutError": "Lütfen 10'dan büyük veya eşit bir sayı girin", + "jsonDesc": "Lütfen alana MCP Sunucu JSON'unu girin veya yapıştırın", + "addArg": "Argüman Ekle", + "addEnv": "Ortam Değişkeni Ekle", + "jsonFormatError": { + "addFormat": "Yapılandırma format hatası, lütfen formatı kontrol edin ve düzeltin", + "format": "{{mcp}} yapılandırma format hatası, lütfen formatı kontrol edin ve düzeltin", + "nameEmpty": "Ad boş olamaz, lütfen geçerli bir ad girin", + "nameExist": "\"{{mcp}}\" adıyla bir yapılandırma zaten mevcut", + "stringError": "Araç {{mcp}}: {{field}} alanı bir dize olmalıdır", + "numberError": "Araç {{mcp}}: {{field}} alanı bir sayı olmalıdır", + "floatError": "Araç {{mcp}}: {{field}} alanı bir ondalık sayı olmalıdır", + "booleanError": "Araç {{mcp}}: {{field}} alanı true veya false olarak ayarlanmalıdır", + "arrayError": "Araç {{mcp}}: {{field}} alanı bir dizi olarak sağlanmalıdır", + "objectError": "Araç {{mcp}}: {{field}} alanı bir nesne olarak sağlanmalıdır", + "optionError": "Araç {{mcp}}: {{field}} alanı yalnızca {{options}} olabilir", + "requiredError": "Araç {{mcp}}: {{field}} alanı zorunludur", + "jsonError": "Araç {{mcp}}: JSON format hatası, lütfen formatı kontrol edin ve düzeltin", + "toolNumberError": "Düzenleme modunda yalnızca bir araç ayarlanabilir, lütfen diğer araç olmayan öğeleri kaldırın", + "enabled": "Araç {{mcp}}: enabled alanı true veya false olarak ayarlanmalıdır", + "command": "Araç {{mcp}}: command alanı bir dize olmalıdır", + "args": "Araç {{mcp}}: args alanı bir dizi olarak sağlanmalıdır", + "env": "Araç {{mcp}}: env alanı bir nesne olarak sağlanmalıdır", + "url": "Araç {{mcp}}: url alanı bir dize olmalıdır", + "transport": "Araç {{mcp}}: transport alanı yalnızca {{options}} olabilir", + "initialTimeout": "Araç {{mcp}}: initialTimeout alanı bir ondalık sayı olmalıdır", + "range": "Araç {{mcp}}: {{field}} alan değeri aralık dışında, lütfen değeri kontrol edin ve düzeltin", + "minRange": "Araç {{mcp}}: {{field}} alanı {{value}} değerinden büyük veya eşit olmalıdır", + "maxRange": "Araç {{mcp}}: {{field}} alanı {{value}} değerinden küçük veya eşit olmalıdır" + }, + "namePlaceholder": "Ad girin...", + "commandPlaceholder": "Komut girin...", + "argsPlaceholder": "Argümanları girin...", + "envKey": "Değişken adını girin (Anahtar)...", + "envValue": "Değişken değerini girin (Değer)...", + "inputKeyError": "{{ name }} değişken adı kopya", + "urlPlaceholder": "URL girin...", + "transportPlaceholder": "Taşıma seçin...", + "providerSearchPlaceholder": "Sağlayıcı ara girin...", + "noProviderSearchResult": "İlgili sağlayıcı bulunamadı", + "toogleToolAlt": "MCP Araçlarını Etkinleştir", + "logTitle": "UVX Komutunu Çalıştır", + "logProcessing": "İşleniyor...", + "no_tool_title": "Kullanılabilir MCP Sunucusu Yok", + "no_oap_tool_message": { + "all": "Lütfen kullanmak için bir OAP MCP Sunucusu seçin veya özel bir MCP Sunucusu ekleyin.", + "oap": "Lütfen kullanmak için bir OAP MCP Sunucusu seçin.", + "custom": "Lütfen özel bir MCP Sunucusu ekleyin." + }, + "no_tool_message": "Lütfen bir MCP Sunucusu ekleyin.", + "tab": { + "all": "Tüm Araçlar", + "oap": "OAP Araçları", + "custom": "Özel Araçlar" + }, + "oapStoreLinkAlt": "Detayları Görüntüle", + "subToolsCount": "Etkinleştirilen Araçlar: {{count}} / {{total}}", + "disabledDescription": "Devre Dışı", + "unsaved": { + "title": "Kaydedilmemiş Değişiklikler", + "desc": "Kaydedilmemiş değişiklikleriniz var. Bu sayfadan ayrılırsanız değişiklikler kaybolacak. Devam etmek istiyor musunuz?", + "cancel": "Değişiklikleri İptal Et", + "save": "Kaydet" + }, + "oauthAlert": "Lütfen bu bağlayıcıya güvendiğinizi onaylayın: bu bağlayıcı Dive tarafından doğrulanmamıştır. Dive ile gerçekleştirdiğiniz tüm işlemlerden siz sorumlusunuz.", + "reload": { + "headerBtn": "Yeniden Yükle", + "headerBtnAlt": "MCP Araçlarını Yeniden Yükle ve Güncelle" + }, + "oap": { + "type": { + "all": "Tüm Araçlar", + "base": "Yalnızca Base Göster", + "pro": "Yalnızca Pro Göster" + }, + "sort": { + "title": "Sırala", + "popular": "Popüler", + "new": "Yeni" + }, + "tag": "Etiket", + "no_search_data_title": "MCP Aracı bulunamadı", + "no_search_data": "Arama sonucu bulunamadı, lütfen arama kelimesini temizleyin veya filtre koşullarını ayarlayın.", + "clear_filter": "Filtreyi Temizle", + "hint": "Yüksek seviye MCP Sunucuları kurulum için Pro sürümüne yükseltme gerektirir", + "high_cost_title": "Yüksek Maliyetli MCP Sunucularını Etkinleştir", + "high_cost_desc": "Çok fazla jeton tüketen MCP Sunucuları seçtiniz. Lütfen plan kullanımınızın yeterli olup olmadığını kontrol edin.", + "headerBtnAlt": "OAP MCP Araçlarını Ekle / Görüntüle" + }, + "custom": { + "headerBtn": "Yapılandırma Ekle / Düzenle", + "headerBtnAlt": "Özel Araçları Ekle / Düzenle", + "listAdd": "MCP Sunucusu Ekle", + "titleAdd": "MCP Sunucusu Ekle", + "titleEdit": "{{tool}} MCP'yi Düzenle", + "titleEditJson": "MCP Araç Ayarları" + } + }, + "modelConfig": { + "title": "Model Ayarları", + "customInstructions": "Özel İstem", + "customInstructionsPlaceholder": "Özel sistem istemi girin...", + "customInstructionsDescription": "Bu istemler her isteğin sistem isteminin sonuna eklenecektir", + "saveInstructions": "Talimatları Kaydet", + "customRulesSaved": "Özel talimatlar kaydedildi", + "customRulesFailed": "Özel talimatları kaydetme başarısız", + "modelDescription": "Kullanılacak model adı", + "modelDescriptionHint": "Kullanılacak model adı (Kullanılabilir modelleri görmek için lütfen önce API Anahtarı girin)" + }, + "common": { + "close": "Kapat", + "confirm": "Onayla", + "cancel": "İptal", + "copy": "Kopyala", + "copySuccess": "Kopyalandı", + "zoomInImage": "Resmi Yakınlaştır", + "copyImage": "Resmi Kopyala", + "copyImageUrl": "Resim URL'sini Kopyala", + "downloadImage": "Resmi İndir", + "login": "Giriş Yap", + "signup": "Kayıt Ol", + "save": "Kaydet", + "signout": "Çıkış Yap" + }, + "models": { + "title": "Model Ayarları", + "newProvider": "+ Sağlayıcı Ekle", + "parameters": "Parametre Ayarları", + "instructionsSetting": "Talimat Ayarları", + "listTitle": "Model Sağlayıcısını Yapılandır", + "optional": "(İsteğe bağlı)", + "selfOptional": "(İsteğe bağlı)", + "unSupportModelCount": "{{count}} desteklenmeyen model seçtiniz", + "deleteTitle": "{{name}} Anahtarını silmeyi onayla?", + "deleteDescription": "Bu işlem geri alınamaz.", + "deleteAllTitle": "Model silmeyi onayla?", + "deleteAllDescription": "Silindikten sonra konuşma için hiçbir model mevcut olmayacak", + "deleteToast": "{{name}} Anahtarı silindi", + "deleteFailed": "Sağlayıcı Kimlik Doğrulamasını silme başarısız", + "providerMenu1": "Sağlayıcıyı Düzenle", + "providerMenu2": "Modeli Yönet", + "providerMenu3": "Sil", + "verifying": "API Anahtarı ve model doğrulanıyor...", + "verifyingAbort": "Doğrulama iptal edildi, lütfen daha sonra tekrar deneyin", + "apiKeyError": "Geçersiz API Anahtarı, lütfen API Anahtarınızı kontrol edin ve yeniden girin.", + "closeAllTitle": "Devre dışı bırakmayı onayla?", + "closeAllDescription": "Devre dışı bırakıldıktan sonra konuşma için hiçbir model mevcut olmayacak", + "noModelAlertTitle": "Kullanılabilir model yok!", + "noModelAlertDescription": "Seçilen tüm modeller desteklenmiyor, konuşma mümkün değil", + "selectModelPlaceHolder": "Model seç...", + "noModelAlertOption": "Kullanılabilir model yok", + "popupTitle": "Kullanılabilir Modeller", + "searchPlaceholder": "Modelleri ara...", + "noResult": "Kullanılabilir model yok", + "reloadModelList": "Yeniden Yükle", + "modelSaved": "Modeller kaydedildi", + "modelSaveFailed": "Modelleri kaydetme başarısız", + "parameterSaved": "Parametreler kaydedildi", + "parameterSaveFailed": "Parametreleri kaydetme başarısız", + "ignored": "Bu model için doğrulamayı atla", + "unSupportModel": "Model desteklenmiyor", + "unToolCallsSupport": "Araç Çağrıları desteklenmiyor", + "verify": "Doğrula", + "verifyIgnore": "Yoksay", + "verifyIgnoreAlt": "Doğrulama hatırlatması artık gösterilmeyecek", + "verifyNextTime": "Daha Sonra", + "verifyNextTimeAlt": "Bir sonraki sefer doğrulama isteyecek", + "verifyTitle": "! {{count}} doğrulanmamış model tespit edildi", + "verifyDesc": "Aşağıdaki modeller doğrulanmamış. Onları doğrulamak ister misiniz?", + "progressVerifying": "Model doğrulama devam ediyor, lütfen bekleyin...", + "verifyMenu": { + "advanced": "Gelişmiş Ayarlar", + "verify": "Modeli Doğrula", + "ignore": "Doğrulamayı Yoksay", + "delete": "Modeli Sil" + }, + "customModelID": { + "add": "+ Özel Model Kimliği", + "title": "Özel Model Kimliği", + "placeholder": "Özel model kimliği girin...", + "Error": { + "empty": "Özel model kimliği boş olamaz", + "exist": "Özel model kimliği zaten mevcut" + } + }, + "copyContent": "İçeriği Kopyala", + "editProviderTitle": "{{provider}} Yapılandırmasını Düzenle", + "hide": "Gizle", + "display": "Görüntüle", + "copy": "Kopyala", + "modelSetting": "Gelişmiş Ayarlar", + "streamingModeTooltip": "Akış Modu, model yanıt verdiğinde içeriği kademeli olarak gösterir, bir seferde tümünü göstermek yerine. Düğmeyi kapatmak, Akış Dışı Modda modelin içeriği tamamen oluşturmasını bekler ve bir seferde tümünü görüntüler, modeldeki araç çağrılarıyla uyumluluk sorunlarından kaçınır.", + "streamingModeDescription": "Model yanıtlarının nasıl görüntüleneceğini kontrol edin", + "streamingModeAlert": "Hatırlatma: Bazı modeller araç çağrılarını yalnızca Akış Modu veya Akış Dışı Mod'da destekler. Bu parametreyi ayarlamadan önce ihtiyaçlarınızı tam olarak anlamanız önerilir.", + "customInput": "Özel Giriş", + "addCustomParameter": "Özel Parametre Ekle", + "parameterName": "Parametre Adı", + "parameterType": "Parametre Türü", + "parameterValue": "Parametre Değeri", + "parameterNameDescription": "Adı girin, sıcaklık gibi", + "parameterTypeDescription": "Türü seçin", + "parameterValueDescription": "Lütfen önce parametre türünü seçin ve ardından değeri girin", + "parameterNameDuplicate": "Parametre adı zaten mevcut", + "parameterTypeInt": "Tamsayı", + "parameterTypeFloat": "Ondalık Sayı", + "parameterTypeString": "Dize", + "parameterTypeIntDescription": "İzin verilen aralık 0-1M", + "parameterTypeFloatDescription": "İzin verilen aralık 0.0-1.0", + "parameterTypeStringDescription": "Lütfen bir dize girin, orta gibi", + "reasoningLevelDescription": "Model düşünme derinliğini ayarlayın", + "reasoningLevelTooltip": "Düşük, hızlı bir yanıtı temsil eder, sonuçlara odaklanır ve ek ayrıntılar olmadan doğrudan ve basit bir akıl yürütme ile. Orta, yeterli mantıksal açıklama ile bir yanıt sağlar, anahtar bilgileri kapsar. Yüksek, yapılandırılmış ve ayrıntılı analiz ve açıklama ile derin bir yanıt sunar.", + "tokenBudgetDescription": "Akıl yürütme değerini ayarlayın ({{min}}~{{max}})", + "parameterVerify": "Parametre Doğrulama", + "verifyErrorInfo": "Doğrulama Hatası Ayrıntıları", + "verifyErrorMsg": "Model doğrulama sırasında herhangi bir araç kullanmadı, bu destek eksikliği veya tetiklenmemesi nedeniyle olabilir. Bu nedenle araçları destekleyip desteklemediğini doğrulamak mümkün değil.", + "verifyStatusSuccess": "Model doğrulama başarılı, orijinal yapılandırma ile etkinleştirildi", + "verifyStatusSuccessInPrompt": "Model doğrulama başarılı, MCP İstemler ile etkinleştirildi", + "verifyUnexpectedFailed": "Model doğrulama başarısız, bilinmeyen bir hata oluştu, lütfen daha sonra tekrar deneyin", + "oapUsageLimit": "Kullanım limiti ulaşıldı, geçici olarak kullanılamıyor" + }, + "system": { + "title": "Sistem Ayarları", + "language": "Sistem Dili", + "languageDefault": "Sistem Varsayılanı", + "languageDescription": "Sistem arayüzünü görüntülemek için kullanılan dil. Modelde kullanılan dil model ayarları sayfasında değiştirilebilir, bu Dive arayüzünde görüntülenen dile atıfta bulunur", + "theme": "Karanlık Mod", + "themeDescription": "Sistem varsayılanı ve karanlık mod arasında geçiş yapın", + "defaultInstructions": "speak in Turkish", + "autoDownload": "Otomatik Güncelleme İndirme", + "autoDownloadDescription": "Kullanıcı yeniden başlattığında veya menü sayfasındaki \"Yükselt\" düğmesine tıkladığında DIVE'ın yeni sürümünü otomatik olarak indirin, yeni sürüm etkinleştirilecek", + "autoLaunch": "Otomatik Başlatma", + "autoLaunchDescription": "Sistem başladığında Dive AI'yı otomatik olarak başlat", + "minimalToTray": "Sistem tepsisine küçült", + "minimalToTrayDescription": "Pencere kapatıldığında program tamamen çıkmak yerine sistem tepsisine küçültülecek", + "loginTitle": "OAP Girişi", + "loginDescription": "Giriş yapmak için OpenAgentPlatform kullanın, LLM'leri, AI Ajanlarını ve MCP Sunucularını kolayca bağlamak için teknik geçmişe gerek yok — Akıllı çözümleri şimdi deneyimleyin!", + "personalInformationTitle": "Kişisel Bilgiler", + "defaultSystemPrompt": "Dive Varsayılan Sistem İstemi", + "defaultSystemPromptDescription": "Dive Varsayılan Sistem İstemi, sohbet için varsayılan sistem istemi olarak kullanılır. LLM'ye Dive sohbetinin KaTeX / Markdown / Mermaid vb.'yi desteklediğini söyler. Bu özellik belirli jetonları tüketir, bu da yanıtı sistem istemi olmayan isteme göre daha yavaş hale getirebilir. Öte yandan, devre dışı bırakılırsa LLM'nin yanıt kalitesi azalabilir", + "usageAnalytics": "Görüntülemek için OAP Hub'daki Kontrol Paneli sayfasına gidin", + "usageAnalyticsTitle": "Kullanım Analitikleri", + "userEdit": "Değişiklik yapmak için OAP Hub'daki Hesap sayfasına gidin", + "planSectionTitle": "Mevcut plan kullanımı", + "subscriptionDate": "Abonelik tarihi", + "remainingUsage": "Kalan kullanım", + "usageWarningTitle": "Jeton kullanım limiti ulaşıldı.", + "usageWarning": "Pro plan kotası gelecek ay sıfırlanır veya daha fazla kullanım için jeton paketleri satın alın. Temel Modeller ve MCP hala kullanılabilir.", + "BaseSubscriptionDate": "Asla sona ermez", + "BaseRemainingUsage": "Sınır yok", + "BaseUsageWarning": "Base planı Temel Modellere ve Temel MCP'lere erişim içerir. Diğer modelleri ve MCP'leri kullanmak için lütfen Plan Sayfası'ndan planınızı yükseltin.", + "customPromptDescription": "Ek özel talimatlara ihtiyacınız varsa, lütfen ayarlamak için aşağıdaki \"Özel İstem\" işlevine tıklayın.", + "customPromptButton": "Özel İstem", + "tokenPackageTitle": "Jeton paketi kullanımı", + "tokenPackageHint": "Jeton paketlerinin son kullanma tarihi yoktur ve yalnızca aylık plan kotası tükendikten sonra kullanılacaktır.", + "tokenPackageRemainingUsage": "Kalan kullanım", + "tokenPackageWarningTitle": "Jeton kotası tükendi.", + "tokenPackageWarning": "OAPhub Kontrol Paneli sayfasında daha fazla jeton kullanımı doldurabilirsiniz.", + "skipTlsVerifyWarning": "Güvenlik uyarısı: Sertifika doğrulamasını yoksaymak bağlantı güvenliğini azaltabilir. Güvenilir ağ ortamlarında kullanılması önerilir." + }, + "toast": { + "copiedToClipboard": "Panoya kopyalandı", + "copyFailed": "Kopyalama başarısız", + "copiedImage": "Resim Kopyalandı", + "downloadedImage": "Resim İndirildi" + }, + "keymap": { + "title": "Klavye Kısayolları", + "events": { + "chat-input_submit": "Mesaj Gönder", + "chat-input_upload-file": "Dosya Yükle", + "chat-input_focus": "Giriş Odakla", + "chat-input_paste-last-message": "Son Mesajı Yapıştır", + "chat-message_copy-last": "Son Mesajı Kopyala", + "chat_delete": "Sohbeti Sil", + "global_new-chat": "Yeni Sohbet", + "global_toggle-sidebar": "Kenar Çubuğunu Değiştir", + "global_close-layer": "Pencereyi Kapat", + "global_toggle-keymap-modal": "Klavye Kısayolu Yardımını Değiştir" + } + }, + "update": { + "downloading": "İndiriliyor...", + "readyToInstall": "Yüklemeye Hazır", + "clickToInstall": "Güncellemeyi yüklemek için tıklayın" + }, + "login": { + "subtitle": "Dive AI, işlev çağrılarını destekleyen çeşitli büyük dil modellerini sorunsuz bir şekilde entegre eden açık kaynaklı bir masaüstü uygulamasıdır. Temiz ve sezgisel arayüzü sayesinde günlük sorulardan profesyonel görevlere kadar en ileri AI ile kolayca konuşabilir, kesin yanıtlar alabilir ve onu akıllı asistanınız yapabilirsiniz.", + "title1": "Kendi Hazırladığınız Modelleri Kullanın", + "description1": "İleri düzey AI uzmanları için uygundur. Yerel Ollama, llama.cpp veya Openrouter, OpenAI, Anthropic veya diğer AI şirketlerinden uzak LLM API'leri olsun, kendi yapılandırmanız hazırsa lütfen bu seçeneği kullanın.", + "button1": "Model Ayarlarına Git", + "title2": "OpenAgentPlatform'u Kullanın", + "description2": "OAP, teknik uzmanlık gerektirmeden LLM'leri, AI Ajanlarını ve MCP Sunucularını bağlayarak herkesin en gelişmiş AI hizmetlerini kullanmasını kolaylaştırır. AI'nın sınırsız olanaklarını keşfedin ve akıllı çözümleri şimdi deneyimleyin.", + "button2": "OAP için Kayıt Ol", + "button3": "OAP'ye Giriş Yap" + }, + "InstallHostDependencies": { + "title": "Ana Bilgisayar Bağımlılıkları İndiriliyor...", + "retry": "Yeniden Dene", + "stop": "Durdur", + "tip": "İndirme sırasında bir hata oluşursa, lütfen önce bu pencereyi kapatın ve yeniden indirmek için uygulamayı yeniden başlatın." + }, + "deeplink": { + "mcpInstallConfirm": "Stdio MCP Hizmetini Ekle - Aşağıdaki komut aracılığıyla MCP ekleyeceksiniz, lütfen onaylayın:" + } +} + diff --git a/src/locales/uk/translation.json b/src/locales/uk/translation.json new file mode 100644 index 00000000..0f6ee57b --- /dev/null +++ b/src/locales/uk/translation.json @@ -0,0 +1,442 @@ +{ + "header": { + "title": "Dive AI", + "openSidebar": "Відкрити бічну панель", + "closeSidebar": "Закрити бічну панель" + }, + "chat": { + "placeholder": "Надіслати повідомлення...", + "newChat": "Новий чат", + "newChatTooltip": "Почати нову розмову", + "history": "Історія", + "copyCode": "Копіювати", + "previewCode": "Натисніть для попереднього перегляду", + "uploadFile": "Завантажити файл", + "send": "Надіслати", + "untitledChat": "Чат без назви", + "deleteChat": "Видалити чат", + "deleteSuccess": "Чат видалено", + "deleteFailed": "Видалення не вдалося", + "confirmDelete": "Підтвердити видалення", + "confirmDeleteDescription": "Після видалення чат не може бути відновлений.", + "tools": { + "button": "Інструменти", + "enabledHint": "Увімкнено {{enabled}} інструментів", + "failedHint": "Увімкнено {{enabled}} інструментів, {{failed}} інструментів не вдалося" + }, + "abort": "Зупинити генерацію", + "retry": "Повторити", + "noModelAlert": "Немає доступних моделей", + "noModelBanner": "Немає доступних моделей, спочатку виберіть модель", + "onLimit": "Ви досягли ліміту використання плану {{plan}}, моделі oap не можуть бути використані", + "modelSettings": "Налаштування моделі", + "copy": "Копіювати", + "copied": "Скопійовано", + "edit": "Редагувати", + "editDescription": "Редагування цього повідомлення створить нову відповідь", + "cancel": "Скасувати", + "save": "Зберегти", + "toolCalls": "🛠 Результат виклику інструмента {{name}}", + "unsupportTools": "{{model}} не підтримує виклики інструментів", + "dragFiles": "Перетягніть файли сюди, щоб додати до чату", + "tools-btn": { + "disableToast": "Виклики інструментів вимкнено", + "disable": "Вимкнути виклики інструментів", + "enableToast": "Виклики інструментів увімкнено", + "enable": "Увімкнути виклики інструментів" + } + }, + "welcome": { + "title": "Ласкаво просимо до Dive AI", + "subtitle": "Почніть свою розмову з AI", + "startChat": "Почати чат" + }, + "setup": { + "title": "Початкове налаштування", + "subtitle": "Будь ласка, налаштуйте параметри моделі", + "required": "Це поле обов'язкове", + "submit": "Зберегти налаштування", + "provider": "Постачальник моделі", + "verify": "Перевірити модель", + "verifying": "Перевірка...", + "verifySuccess": "Перевірка моделі успішна", + "verifySuccessNoTool": "Перевірка моделі успішна, але не підтримує виклики інструментів", + "verifyFailed": "Перевірка моделі не вдалася", + "verifyError": "Сталася помилка під час перевірки", + "saveSuccess": "Налаштування успішно збережено", + "saveFailed": "Не вдалося зберегти налаштування", + "back": "Назад", + "parameters": "Параметри", + "topPDescription": "Параметр Top-P контролює діапазон вибору слів. Значення 0 використовує значення за замовчуванням; нижчі значення вибирають лише слова з високою ймовірністю, що призводить до консервативних відповідей; вищі значення розширюють діапазон словникового запасу, що призводить до більш різноманітних відповідей.", + "temperatureDescription": "Параметр температури контролює випадковість відповідей. Значення 0 використовує значення за замовчуванням; нижчі значення виробляють більш точні та стабільні відповіді; вищі значення генерують більш творчі, але менш строгі відповіді." + }, + "sidebar": { + "tools": "Управління інструментами (MCP)", + "settings": "Налаштування моделі", + "update": "Доступне оновлення", + "models": "Налаштування моделі", + "system": "Системні налаштування", + "manageAndSettings": "Управління та налаштування", + "OAPhub": "OAPhub", + "signOut": "Вийти", + "chat": { + "starredChat": "Обране", + "starChat": "Додати до обраного", + "unStarChat": "Видалити з обраного", + "starFailed": "Не вдалося додати до обраного", + "renameChat": "Перейменувати", + "renameFailed": "Перейменування не вдалося", + "deleteChat": "Видалити" + } + }, + "setting": { + "tabs": { + "Tools": "Управління інструментами MCP", + "Model": "Постачальник моделі", + "Account": "Обліковий запис", + "System": "Системні налаштування" + } + }, + "tools": { + "title": "Управління інструментами (MCP)", + "editConfig": "Редагувати конфігурацію", + "editConfigAlt": "Редагувати конфігурацію сервера MCP", + "configTitle": "Конфігурація сервера MCP", + "save": "Зберегти", + "cancel": "Скасувати", + "saveSuccess": "Налаштування успішно збережено", + "saveFailed": "Не вдалося зберегти налаштування", + "toggleFailed": "Сталася помилка", + "reloadFailed": "{{toolName}} сталася помилка, перезавантаження не вдалося", + "reloadAllFailed": "{{number}} викликів інструментів сталася помилка, перезавантаження не вдалося", + "openConfigFolder": "Папка конфігурації", + "openConfigFolderAlt": "Відкрити папку конфігурації", + "fetchFailed": "Не вдалося завантажити інструменти", + "configFetchFailed": "Не вдалося завантажити конфігурацію", + "configSaveAborted": "Збереження конфігурації перервано", + "invalidJson": "Невірний формат JSON", + "updateFailed": "{{serverName}} не вдалося завантажити: {{error}}", + "installFailed": "Встановлення не вдалося", + "startFailed": "Запуск не вдався", + "toolMenu": { + "delete": "Видалити", + "edit": "Редагувати", + "reload": "Перезавантажити", + "detail": "Переглянути деталі" + }, + "delete": "Видалити", + "jsonCopy": "Копіювати", + "jsonCopied": "Скопійовано", + "jsonDownload": "Завантажити", + "deleteTitle": "Підтвердити видалення інструмента {{mcp}}?", + "deleteAllTitle": "Підтвердити видалення всіх інструментів?", + "fieldTitle": "Поле", + "fieldTitleAlt": "Поля зазвичай задовольняють більшість потреб, але якщо ваші налаштування MCP вимагають додаткових полів або інших типів, ви можете редагувати безпосередньо в текстовій області JSON праворуч, щоб задовольнити вимоги вашої програми", + "initialTimeoutAlt": "Початковий час очікування з'єднання за замовчуванням встановлено на 10 секунд, але може бути встановлено на будь-яке число з плаваючою комою 10 секунд або більше. Немає обмеження на кількість секунд. Рекомендується налаштувати це значення, якщо сервер має повільне з'єднання.", + "initialTimeoutPlaceholder": "Введіть початковий тайм-аут...", + "initialTimeoutError": "Будь ласка, введіть число більше або рівне 10", + "jsonDesc": "Будь ласка, введіть або вставте JSON сервера MCP у поле", + "addArg": "Додати аргумент", + "addEnv": "Додати змінну оточення", + "jsonFormatError": { + "addFormat": "Помилка формату конфігурації, будь ласка, перевірте та виправте формат", + "format": "Помилка формату конфігурації {{mcp}}, будь ласка, перевірте та виправте формат", + "nameEmpty": "Ім'я не може бути порожнім, будь ласка, введіть дійсне ім'я", + "nameExist": "Конфігурація з іменем \"{{mcp}}\" вже існує", + "stringError": "Інструмент {{mcp}}: Поле {{field}} повинно бути рядком", + "numberError": "Інструмент {{mcp}}: Поле {{field}} повинно бути числом", + "floatError": "Інструмент {{mcp}}: Поле {{field}} повинно бути числом з плаваючою комою", + "booleanError": "Інструмент {{mcp}}: Поле {{field}} має бути встановлено на true або false", + "arrayError": "Інструмент {{mcp}}: Поле {{field}} має бути надано у вигляді масиву", + "objectError": "Інструмент {{mcp}}: Поле {{field}} має бути надано у вигляді об'єкта", + "optionError": "Інструмент {{mcp}}: Поле {{field}} може бути лише {{options}}", + "requiredError": "Інструмент {{mcp}}: Поле {{field}} обов'язкове", + "jsonError": "Інструмент {{mcp}}: Помилка формату JSON, будь ласка, перевірте та виправте формат", + "toolNumberError": "У режимі редагування може бути встановлено лише один інструмент, будь ласка, видаліть інші елементи, що не є інструментами", + "enabled": "Інструмент {{mcp}}: Поле enabled має бути встановлено на true або false", + "command": "Інструмент {{mcp}}: Поле command повинно бути рядком", + "args": "Інструмент {{mcp}}: Поле args має бути надано у вигляді масиву", + "env": "Інструмент {{mcp}}: Поле env має бути надано у вигляді об'єкта", + "url": "Інструмент {{mcp}}: Поле url повинно бути рядком", + "transport": "Інструмент {{mcp}}: Поле transport може бути лише {{options}}", + "initialTimeout": "Інструмент {{mcp}}: Поле initialTimeout повинно бути числом з плаваючою комою", + "range": "Інструмент {{mcp}}: Значення поля {{field}} виходить за межі діапазону, будь ласка, перевірте та виправте значення", + "minRange": "Інструмент {{mcp}}: Поле {{field}} має бути більше або рівне {{value}}", + "maxRange": "Інструмент {{mcp}}: Поле {{field}} має бути менше або рівне {{value}}" + }, + "namePlaceholder": "Введіть ім'я...", + "commandPlaceholder": "Введіть команду...", + "argsPlaceholder": "Введіть аргументи...", + "envKey": "Введіть ім'я змінної (Ключ)...", + "envValue": "Введіть значення змінної (Значення)...", + "inputKeyError": "Дублікат імені змінної {{ name }}", + "urlPlaceholder": "Введіть URL...", + "transportPlaceholder": "Виберіть транспорт...", + "providerSearchPlaceholder": "Введіть пошук Постачальника...", + "noProviderSearchResult": "Пов'язаний постачальник не знайдено", + "toogleToolAlt": "Увімкнути інструменти MCP", + "logTitle": "Виконати команду UVX", + "logProcessing": "Обробка...", + "no_tool_title": "Немає доступних серверів MCP", + "no_oap_tool_message": { + "all": "Будь ласка, виберіть сервер MCP OAP для використання або додайте власний сервер MCP.", + "oap": "Будь ласка, виберіть сервер MCP OAP для використання.", + "custom": "Будь ласка, додайте власний сервер MCP." + }, + "no_tool_message": "Будь ласка, додайте сервер MCP.", + "tab": { + "all": "Усі інструменти", + "oap": "Інструменти OAP", + "custom": "Власні інструменти" + }, + "oapStoreLinkAlt": "Переглянути деталі", + "subToolsCount": "Увімкнені інструменти: {{count}} / {{total}}", + "disabledDescription": "Вимкнено", + "unsaved": { + "title": "Незбережені зміни", + "desc": "У вас є незбережені зміни. Якщо ви залишите цю сторінку, зміни будуть втрачені. Хочете продовжити?", + "cancel": "Скасувати зміни", + "save": "Зберегти" + }, + "oauthAlert": "Будь ласка, підтвердьте, що ви довіряєте цьому конектору: цей конектор не був перевірений Dive. Ви несете відповідальність за всі операції, які ви виконуєте з Dive.", + "reload": { + "headerBtn": "Перезавантажити", + "headerBtnAlt": "Перезавантажити та оновити інструменти MCP" + }, + "oap": { + "type": { + "all": "Усі інструменти", + "base": "Показати лише Base", + "pro": "Показати лише Pro" + }, + "sort": { + "title": "Сортувати", + "popular": "Популярне", + "new": "Нове" + }, + "tag": "Тег", + "no_search_data_title": "Інструменти MCP не знайдено", + "no_search_data": "Результати пошуку не знайдено, будь ласка, очистіть ключове слово пошуку або налаштуйте умови фільтра.", + "clear_filter": "Очистити фільтр", + "hint": "Високорівневі сервери MCP вимагають оновлення до версії Pro для встановлення", + "high_cost_title": "Увімкнути сервери MCP з високою вартістю", + "high_cost_desc": "Ви вибрали сервери MCP, які споживають багато токенів. Будь ласка, перевірте, чи достатньо використання вашого плану.", + "headerBtnAlt": "Додати / Переглянути інструменти MCP OAP" + }, + "custom": { + "headerBtn": "Додати / Редагувати конфігурацію", + "headerBtnAlt": "Додати / Редагувати власні інструменти", + "listAdd": "Додати сервер MCP", + "titleAdd": "Додати сервер MCP", + "titleEdit": "Редагувати {{tool}} MCP", + "titleEditJson": "Налаштування інструментів MCP" + } + }, + "modelConfig": { + "title": "Налаштування моделі", + "customInstructions": "Власна підказка", + "customInstructionsPlaceholder": "Введіть власну системну підказку...", + "customInstructionsDescription": "Ці підказки будуть додані в кінці системної підказки кожного запиту", + "saveInstructions": "Зберегти інструкції", + "customRulesSaved": "Власні інструкції збережено", + "customRulesFailed": "Не вдалося зберегти власні інструкції", + "modelDescription": "Ім'я моделі для використання", + "modelDescriptionHint": "Ім'я моделі для використання (Будь ласка, спочатку введіть API-ключ, щоб побачити доступні моделі)" + }, + "common": { + "close": "Закрити", + "confirm": "Підтвердити", + "cancel": "Скасувати", + "copy": "Копіювати", + "copySuccess": "Скопійовано", + "zoomInImage": "Збільшити зображення", + "copyImage": "Копіювати зображення", + "copyImageUrl": "Копіювати URL зображення", + "downloadImage": "Завантажити зображення", + "login": "Увійти", + "signup": "Зареєструватися", + "save": "Зберегти", + "signout": "Вийти" + }, + "models": { + "title": "Налаштування моделі", + "newProvider": "+ Додати постачальника", + "parameters": "Налаштування параметрів", + "instructionsSetting": "Налаштування інструкцій", + "listTitle": "Налаштувати постачальника моделі", + "optional": "(Необов'язково)", + "selfOptional": "(Необов'язково)", + "unSupportModelCount": "Ви вибрали {{count}} непідтримуваних моделей", + "deleteTitle": "Підтвердити видалення ключа {{name}}?", + "deleteDescription": "Цю дію не можна скасувати.", + "deleteAllTitle": "Підтвердити видалення моделі?", + "deleteAllDescription": "Після видалення моделі не будуть доступні для розмови", + "deleteToast": "Ключ {{name}} видалено", + "deleteFailed": "Не вдалося видалити автентифікацію постачальника", + "providerMenu1": "Редагувати постачальника", + "providerMenu2": "Керувати моделлю", + "providerMenu3": "Видалити", + "verifying": "Перевірка API-ключа та моделі...", + "verifyingAbort": "Перевірка перервана, будь ласка, спробуйте пізніше", + "apiKeyError": "Невірний API-ключ, будь ласка, перевірте та введіть ваш API-ключ знову.", + "closeAllTitle": "Підтвердити деактивацію?", + "closeAllDescription": "Після деактивації моделі не будуть доступні для розмови", + "noModelAlertTitle": "Немає доступних моделей!", + "noModelAlertDescription": "Усі вибрані моделі не підтримуються, розмова неможлива", + "selectModelPlaceHolder": "Вибрати модель...", + "noModelAlertOption": "Немає доступних моделей", + "popupTitle": "Доступні моделі", + "searchPlaceholder": "Пошук моделей...", + "noResult": "Немає доступних моделей", + "reloadModelList": "Перезавантажити", + "modelSaved": "Моделі збережено", + "modelSaveFailed": "Не вдалося зберегти моделі", + "parameterSaved": "Параметри збережено", + "parameterSaveFailed": "Не вдалося зберегти параметри", + "ignored": "Пропустити перевірку для цієї моделі", + "unSupportModel": "Модель не підтримується", + "unToolCallsSupport": "Виклики інструментів не підтримуються", + "verify": "Перевірити", + "verifyIgnore": "Ігнорувати", + "verifyIgnoreAlt": "Нагадування про перевірку більше не відображатиметься", + "verifyNextTime": "Пізніше", + "verifyNextTimeAlt": "Запитає про перевірку наступного разу", + "verifyTitle": "! Виявлено {{count}} неперевірених моделей", + "verifyDesc": "Наступні моделі не перевірені. Хочете їх перевірити?", + "progressVerifying": "Перевірка моделі в процесі, будь ласка, зачекайте...", + "verifyMenu": { + "advanced": "Розширені налаштування", + "verify": "Перевірити модель", + "ignore": "Ігнорувати перевірку", + "delete": "Видалити модель" + }, + "customModelID": { + "add": "+ Власний ID моделі", + "title": "Власний ID моделі", + "placeholder": "Введіть власний ID моделі...", + "Error": { + "empty": "Власний ID моделі не може бути порожнім", + "exist": "Власний ID моделі вже існує" + } + }, + "copyContent": "Копіювати вміст", + "editProviderTitle": "Редагувати конфігурацію {{provider}}", + "hide": "Приховати", + "display": "Показати", + "copy": "Копіювати", + "modelSetting": "Розширені налаштування", + "streamingModeTooltip": "Режим потокової передачі - це коли модель відповідає, вона показує вміст поступово, замість того, щоб показати все одразу. Вимкнення кнопки в режимі без потокової передачі буде чекати, поки модель повністю згенерує вміст і покаже все одразу, уникаючи проблем сумісності з викликами інструментів у моделі.", + "streamingModeDescription": "Контролювати, як відображаються відповіді моделі", + "streamingModeAlert": "Нагадування: Деякі моделі підтримують виклики інструментів лише в режимі потокової передачі або без потокової передачі. Рекомендується повністю зрозуміти ваші потреби перед налаштуванням цього параметра.", + "customInput": "Власне введення", + "addCustomParameter": "Додати власний параметр", + "parameterName": "Ім'я параметра", + "parameterType": "Тип параметра", + "parameterValue": "Значення параметра", + "parameterNameDescription": "Введіть ім'я, наприклад, температура", + "parameterTypeDescription": "Виберіть тип", + "parameterValueDescription": "Будь ласка, спочатку виберіть тип параметра, а потім введіть значення", + "parameterNameDuplicate": "Ім'я параметра вже існує", + "parameterTypeInt": "Ціле число", + "parameterTypeFloat": "Число з плаваючою комою", + "parameterTypeString": "Рядок", + "parameterTypeIntDescription": "Допустимий діапазон 0-1M", + "parameterTypeFloatDescription": "Допустимий діапазон 0.0-1.0", + "parameterTypeStringDescription": "Будь ласка, введіть рядок, наприклад, medium", + "reasoningLevelDescription": "Встановити глибину мислення моделі", + "reasoningLevelTooltip": "Низький представляє швидку відповідь, фокусуючись на висновках і без додаткових деталей, з прямим і простим міркуванням. Середній надає відповідь з достатнім логічним поясненням, охоплюючи ключову інформацію. Високий пропонує глибоку відповідь зі структурованим і детальним аналізом та поясненням.", + "tokenBudgetDescription": "Встановити значення міркування ({{min}}~{{max}})", + "parameterVerify": "Перевірка параметрів", + "verifyErrorInfo": "Деталі помилки перевірки", + "verifyErrorMsg": "Модель не використовувала жодних інструментів під час перевірки, що може бути пов'язано з відсутністю підтримки або неактивацією. Тому неможливо підтвердити, чи підтримує вона інструменти.", + "verifyStatusSuccess": "Перевірка моделі успішна, увімкнено з оригінальною конфігурацією", + "verifyStatusSuccessInPrompt": "Перевірка моделі успішна, увімкнено з MCP Prompts", + "verifyUnexpectedFailed": "Перевірка моделі не вдалася, сталася невідома помилка, будь ласка, спробуйте пізніше", + "oapUsageLimit": "Досягнуто ліміт використання, тимчасово недоступно" + }, + "system": { + "title": "Системні налаштування", + "language": "Мова системи", + "languageDefault": "За замовчуванням системи", + "languageDescription": "Мова, що використовується для відображення системного інтерфейсу. Мова, що використовується в моделі, може бути змінена на сторінці налаштувань моделі, це стосується мови, що відображається в інтерфейсі Dive", + "theme": "Темний режим", + "themeDescription": "Перемикання між системним за замовчуванням та темним режимом", + "defaultInstructions": "speak in Ukrainian", + "autoDownload": "Автоматичне завантаження оновлень", + "autoDownloadDescription": "Автоматично завантажувати нову версію DIVE, коли користувач перезапускається або натискає кнопку \"Оновити\" на сторінці меню, нова версія буде увімкнена", + "autoLaunch": "Автозапуск", + "autoLaunchDescription": "Автоматично запускати Dive AI при запуску системи", + "minimalToTray": "Згорнути в трей", + "minimalToTrayDescription": "При закритті вікна програма буде згорнута в системний трей замість повного виходу", + "loginTitle": "Вхід в OAP", + "loginDescription": "Використовуйте OpenAgentPlatform для входу, не потрібен технічний досвід для легкого підключення LLM, AI-агентів та серверів MCP — Випробуйте інтелектуальні рішення зараз!", + "personalInformationTitle": "Особиста інформація", + "defaultSystemPrompt": "Системна підказка Dive за замовчуванням", + "defaultSystemPromptDescription": "Системна підказка Dive за замовчуванням використовується як системна підказка за замовчуванням для чату. Вона повідомляє LLM, що чат Dive підтримує KaTeX / Markdown / Mermaid тощо. Ця функція споживає певні токени, що може зробити відповідь повільнішою, ніж підказка без системної підказки. З іншого боку, якщо вона вимкнена, якість відповіді LLM може знизитися", + "usageAnalytics": "Перейдіть на сторінку панелі керування в OAP Hub, щоб переглянути", + "usageAnalyticsTitle": "Аналітика використання", + "userEdit": "Перейдіть на сторінку облікового запису в OAP Hub, щоб внести зміни", + "planSectionTitle": "Використання поточного плану", + "subscriptionDate": "Дата підписки", + "remainingUsage": "Залишкове використання", + "usageWarningTitle": "Досягнуто ліміт використання токенів.", + "usageWarning": "Квота плану Pro скидається наступного місяця або придбайте пакети токенів для додаткового використання. Базові моделі та MCP все ще доступні.", + "BaseSubscriptionDate": "Ніколи не закінчується", + "BaseRemainingUsage": "Без обмежень", + "BaseUsageWarning": "Базовий план включає доступ до базових моделей та базових MCP. Щоб використовувати інші моделі та MCP, оновіть свій план на сторінці плану.", + "customPromptDescription": "Якщо вам потрібні додаткові власні інструкції, натисніть на функцію \"Власна підказка\" нижче, щоб налаштувати її.", + "customPromptButton": "Власна підказка", + "tokenPackageTitle": "Використання пакета токенів", + "tokenPackageHint": "Пакети токенів не мають терміну дії і будуть використані лише після вичерпання місячної квоти плану.", + "tokenPackageRemainingUsage": "Залишкове використання", + "tokenPackageWarningTitle": "Квота токенів використана.", + "tokenPackageWarning": "Ви можете поповнити більше використання токенів на сторінці панелі керування OAPhub.", + "skipTlsVerifyWarning": "Попередження про безпеку: Ігнорування перевірки сертифіката може знизити безпеку з'єднання. Рекомендується використовувати в надійних мережевих середовищах." + }, + "toast": { + "copiedToClipboard": "Скопійовано в буфер обміну", + "copyFailed": "Копіювання не вдалося", + "copiedImage": "Зображення скопійовано", + "downloadedImage": "Зображення завантажено" + }, + "keymap": { + "title": "Гарячі клавіші", + "events": { + "chat-input_submit": "Надіслати повідомлення", + "chat-input_upload-file": "Завантажити файл", + "chat-input_focus": "Фокус на введенні", + "chat-input_paste-last-message": "Вставити останнє повідомлення", + "chat-message_copy-last": "Копіювати останнє повідомлення", + "chat_delete": "Видалити чат", + "global_new-chat": "Новий чат", + "global_toggle-sidebar": "Перемкнути бічну панель", + "global_close-layer": "Закрити вікно", + "global_toggle-keymap-modal": "Перемкнути довідку по гарячих клавішах" + } + }, + "update": { + "downloading": "Завантаження...", + "readyToInstall": "Готово до встановлення", + "clickToInstall": "Натисніть, щоб встановити оновлення" + }, + "login": { + "subtitle": "Dive AI - це настільний додаток з відкритим вихідним кодом, який безшовно інтегрує різні великі мовні моделі, що підтримують виклики функцій. Завдяки чистому та інтуїтивному інтерфейсу ви можете легко спілкуватися з передовим AI, від повсякденних питань до професійних завдань, отримуючи точні відповіді та роблячи його своїм інтелектуальним помічником.", + "title1": "Використовуйте свої власні підготовлені моделі", + "description1": "Підходить для просунутих експертів з AI. Якщо у вас вже є своя конфігурація, будь то локальна Ollama, llama.cpp або віддалені API LLM від Openrouter, OpenAI, Anthropic або інших компаній AI, використовуйте цей варіант.", + "button1": "Перейти до налаштувань моделі", + "title2": "Використовувати OpenAgentPlatform", + "description2": "OAP робить легким для всіх використання найсучасніших AI-сервісів, підключаючи LLM, AI-агенти та сервери MCP без вимог технічних навичок. Досліджуйте необмежені можливості AI та випробуйте інтелектуальні рішення зараз.", + "button2": "Зареєструватися в OAP", + "button3": "Увійти в OAP" + }, + "InstallHostDependencies": { + "title": "Завантаження залежностей хоста...", + "retry": "Повторити", + "stop": "Зупинити", + "tip": "Якщо під час завантаження сталася помилка, спочатку закрийте це вікно та перезапустіть додаток для повторного завантаження." + }, + "deeplink": { + "mcpInstallConfirm": "Додати службу MCP stdio - Ви додасте MCP через наступну команду, будь ласка, підтвердіть:" + } +} + diff --git a/src/locales/vi/translation.json b/src/locales/vi/translation.json new file mode 100644 index 00000000..6d098dd7 --- /dev/null +++ b/src/locales/vi/translation.json @@ -0,0 +1,442 @@ +{ + "header": { + "title": "Dive AI", + "openSidebar": "Mở thanh bên", + "closeSidebar": "Đóng thanh bên" + }, + "chat": { + "placeholder": "Gửi tin nhắn...", + "newChat": "Trò chuyện mới", + "newChatTooltip": "Bắt đầu cuộc trò chuyện mới", + "history": "Lịch sử", + "copyCode": "Sao chép", + "previewCode": "Nhấp để xem trước", + "uploadFile": "Tải file lên", + "send": "Gửi", + "untitledChat": "Trò chuyện không có tiêu đề", + "deleteChat": "Xóa trò chuyện", + "deleteSuccess": "Đã xóa trò chuyện", + "deleteFailed": "Xóa thất bại", + "confirmDelete": "Xác nhận xóa", + "confirmDeleteDescription": "Sau khi xóa, trò chuyện không thể khôi phục.", + "tools": { + "button": "Công cụ", + "enabledHint": "Đã bật {{enabled}} công cụ", + "failedHint": "Đã bật {{enabled}} công cụ, {{failed}} công cụ thất bại" + }, + "abort": "Dừng tạo", + "retry": "Thử lại", + "noModelAlert": "Không có mô hình khả dụng", + "noModelBanner": "Không có mô hình khả dụng, vui lòng chọn mô hình trước", + "onLimit": "Bạn đã đạt giới hạn sử dụng gói {{plan}}, không thể sử dụng mô hình oap", + "modelSettings": "Cài đặt mô hình", + "copy": "Sao chép", + "copied": "Đã sao chép", + "edit": "Chỉnh sửa", + "editDescription": "Chỉnh sửa tin nhắn này sẽ tạo phản hồi mới", + "cancel": "Hủy", + "save": "Lưu", + "toolCalls": "🛠 Kết quả gọi công cụ {{name}}", + "unsupportTools": "{{model}} không hỗ trợ gọi công cụ", + "dragFiles": "Thả file vào đây để thêm vào trò chuyện", + "tools-btn": { + "disableToast": "Đã tắt gọi công cụ", + "disable": "Tắt gọi công cụ", + "enableToast": "Đã bật gọi công cụ", + "enable": "Bật gọi công cụ" + } + }, + "welcome": { + "title": "Chào mừng đến với Dive AI", + "subtitle": "Bắt đầu cuộc trò chuyện AI của bạn", + "startChat": "Bắt đầu trò chuyện" + }, + "setup": { + "title": "Thiết lập ban đầu", + "subtitle": "Vui lòng cấu hình cài đặt mô hình", + "required": "Trường này bắt buộc", + "submit": "Lưu cài đặt", + "provider": "Nhà cung cấp mô hình", + "verify": "Xác minh mô hình", + "verifying": "Đang xác minh...", + "verifySuccess": "Xác minh mô hình thành công", + "verifySuccessNoTool": "Xác minh mô hình thành công, nhưng không hỗ trợ gọi công cụ", + "verifyFailed": "Xác minh mô hình thất bại", + "verifyError": "Đã xảy ra lỗi trong quá trình xác minh", + "saveSuccess": "Đã lưu cài đặt thành công", + "saveFailed": "Lưu cài đặt thất bại", + "back": "Quay lại", + "parameters": "Tham số", + "topPDescription": "Tham số Top-P kiểm soát phạm vi lựa chọn từ. Giá trị 0 sử dụng giá trị mặc định; giá trị thấp hơn chỉ chọn các từ có xác suất cao, dẫn đến câu trả lời thận trọng; giá trị cao hơn mở rộng phạm vi từ vựng, dẫn đến câu trả lời đa dạng hơn.", + "temperatureDescription": "Tham số nhiệt độ kiểm soát tính ngẫu nhiên của câu trả lời. Giá trị 0 sử dụng giá trị mặc định; giá trị thấp hơn tạo ra câu trả lời chính xác và ổn định hơn; giá trị cao hơn tạo ra câu trả lời sáng tạo hơn nhưng kém chặt chẽ hơn." + }, + "sidebar": { + "tools": "Quản lý công cụ (MCP)", + "settings": "Cài đặt mô hình", + "update": "Có bản cập nhật", + "models": "Cài đặt mô hình", + "system": "Cài đặt hệ thống", + "manageAndSettings": "Quản lý và cài đặt", + "OAPhub": "OAPhub", + "signOut": "Đăng xuất", + "chat": { + "starredChat": "Yêu thích", + "starChat": "Thêm vào yêu thích", + "unStarChat": "Xóa khỏi yêu thích", + "starFailed": "Thêm vào yêu thích thất bại", + "renameChat": "Đổi tên", + "renameFailed": "Đổi tên thất bại", + "deleteChat": "Xóa" + } + }, + "setting": { + "tabs": { + "Tools": "Quản lý công cụ MCP", + "Model": "Nhà cung cấp mô hình", + "Account": "Tài khoản", + "System": "Cài đặt hệ thống" + } + }, + "tools": { + "title": "Quản lý công cụ (MCP)", + "editConfig": "Chỉnh sửa cấu hình", + "editConfigAlt": "Chỉnh sửa cấu hình máy chủ MCP", + "configTitle": "Cấu hình máy chủ MCP", + "save": "Lưu", + "cancel": "Hủy", + "saveSuccess": "Đã lưu cài đặt thành công", + "saveFailed": "Lưu cài đặt thất bại", + "toggleFailed": "Đã xảy ra lỗi", + "reloadFailed": "{{toolName}} đã xảy ra lỗi, tải lại thất bại", + "reloadAllFailed": "{{number}} lần gọi công cụ đã xảy ra lỗi, tải lại thất bại", + "openConfigFolder": "Thư mục cấu hình", + "openConfigFolderAlt": "Mở thư mục cấu hình", + "fetchFailed": "Tải công cụ thất bại", + "configFetchFailed": "Tải cấu hình thất bại", + "configSaveAborted": "Lưu cấu hình bị hủy", + "invalidJson": "Định dạng JSON không hợp lệ", + "updateFailed": "{{serverName}} tải thất bại: {{error}}", + "installFailed": "Cài đặt thất bại", + "startFailed": "Khởi động thất bại", + "toolMenu": { + "delete": "Xóa", + "edit": "Chỉnh sửa", + "reload": "Tải lại", + "detail": "Xem chi tiết" + }, + "delete": "Xóa", + "jsonCopy": "Sao chép", + "jsonCopied": "Đã sao chép", + "jsonDownload": "Tải xuống", + "deleteTitle": "Xác nhận xóa công cụ {{mcp}}?", + "deleteAllTitle": "Xác nhận xóa tất cả công cụ?", + "fieldTitle": "Trường", + "fieldTitleAlt": "Các trường thường đáp ứng hầu hết nhu cầu, nhưng nếu cài đặt MCP của bạn yêu cầu các trường bổ sung hoặc các loại khác nhau, bạn có thể chỉnh sửa trực tiếp trong vùng văn bản JSON ở bên phải để đáp ứng yêu cầu chương trình của bạn", + "initialTimeoutAlt": "Thời gian chờ kết nối ban đầu được đặt mặc định là 10 giây, nhưng có thể đặt thành bất kỳ số thập phân nào từ 10 giây trở lên. Không có giới hạn số giây. Nên điều chỉnh giá trị này nếu máy chủ có kết nối chậm.", + "initialTimeoutPlaceholder": "Nhập Thời gian chờ ban đầu...", + "initialTimeoutError": "Vui lòng nhập số lớn hơn hoặc bằng 10", + "jsonDesc": "Vui lòng nhập hoặc dán JSON máy chủ MCP vào trường", + "addArg": "Thêm đối số", + "addEnv": "Thêm biến môi trường", + "jsonFormatError": { + "addFormat": "Lỗi định dạng cấu hình, vui lòng kiểm tra và sửa định dạng", + "format": "Lỗi định dạng cấu hình {{mcp}}, vui lòng kiểm tra và sửa định dạng", + "nameEmpty": "Tên không được để trống, vui lòng nhập tên hợp lệ", + "nameExist": "Cấu hình có tên \"{{mcp}}\" đã tồn tại", + "stringError": "Công cụ {{mcp}}: Trường {{field}} phải là chuỗi", + "numberError": "Công cụ {{mcp}}: Trường {{field}} phải là số", + "floatError": "Công cụ {{mcp}}: Trường {{field}} phải là số thập phân", + "booleanError": "Công cụ {{mcp}}: Trường {{field}} phải được đặt thành true hoặc false", + "arrayError": "Công cụ {{mcp}}: Trường {{field}} phải được cung cấp dưới dạng mảng", + "objectError": "Công cụ {{mcp}}: Trường {{field}} phải được cung cấp dưới dạng đối tượng", + "optionError": "Công cụ {{mcp}}: Trường {{field}} chỉ có thể là {{options}}", + "requiredError": "Công cụ {{mcp}}: Trường {{field}} là bắt buộc", + "jsonError": "Công cụ {{mcp}}: Lỗi định dạng JSON, vui lòng kiểm tra và sửa định dạng", + "toolNumberError": "Chỉ có thể đặt một công cụ trong chế độ chỉnh sửa, vui lòng xóa các mục không phải công cụ khác", + "enabled": "Công cụ {{mcp}}: Trường enabled phải được đặt thành true hoặc false", + "command": "Công cụ {{mcp}}: Trường command phải là chuỗi", + "args": "Công cụ {{mcp}}: Trường args phải được cung cấp dưới dạng mảng", + "env": "Công cụ {{mcp}}: Trường env phải được cung cấp dưới dạng đối tượng", + "url": "Công cụ {{mcp}}: Trường url phải là chuỗi", + "transport": "Công cụ {{mcp}}: Trường transport chỉ có thể là {{options}}", + "initialTimeout": "Công cụ {{mcp}}: Trường initialTimeout phải là số thập phân", + "range": "Công cụ {{mcp}}: Giá trị trường {{field}} nằm ngoài phạm vi, vui lòng kiểm tra và sửa giá trị", + "minRange": "Công cụ {{mcp}}: Trường {{field}} phải lớn hơn hoặc bằng {{value}}", + "maxRange": "Công cụ {{mcp}}: Trường {{field}} phải nhỏ hơn hoặc bằng {{value}}" + }, + "namePlaceholder": "Nhập tên...", + "commandPlaceholder": "Nhập lệnh...", + "argsPlaceholder": "Nhập đối số...", + "envKey": "Nhập tên biến (Khóa)...", + "envValue": "Nhập giá trị biến (Giá trị)...", + "inputKeyError": "Tên biến {{ name }} trùng lặp", + "urlPlaceholder": "Nhập URL...", + "transportPlaceholder": "Chọn phương thức vận chuyển...", + "providerSearchPlaceholder": "Nhập tìm kiếm nhà cung cấp...", + "noProviderSearchResult": "Không tìm thấy nhà cung cấp liên quan", + "toogleToolAlt": "Bật công cụ MCP", + "logTitle": "Chạy lệnh UVX", + "logProcessing": "Đang xử lý...", + "no_tool_title": "Không có máy chủ MCP khả dụng", + "no_oap_tool_message": { + "all": "Vui lòng chọn máy chủ MCP OAP để sử dụng hoặc thêm máy chủ MCP tùy chỉnh.", + "oap": "Vui lòng chọn máy chủ MCP OAP để sử dụng.", + "custom": "Vui lòng thêm máy chủ MCP tùy chỉnh." + }, + "no_tool_message": "Vui lòng thêm máy chủ MCP.", + "tab": { + "all": "Tất cả công cụ", + "oap": "Công cụ OAP", + "custom": "Công cụ tùy chỉnh" + }, + "oapStoreLinkAlt": "Xem chi tiết", + "subToolsCount": "Công cụ đã bật: {{count}} / {{total}}", + "disabledDescription": "Đã tắt", + "unsaved": { + "title": "Thay đổi chưa lưu", + "desc": "Bạn có thay đổi chưa lưu. Nếu bạn rời khỏi trang này, các thay đổi sẽ bị mất. Bạn có muốn tiếp tục không?", + "cancel": "Hủy thay đổi", + "save": "Lưu" + }, + "oauthAlert": "Vui lòng xác nhận rằng bạn tin tưởng trình kết nối này: trình kết nối này chưa được Dive xác minh. Bạn chịu trách nhiệm về tất cả các hoạt động bạn thực hiện với Dive.", + "reload": { + "headerBtn": "Tải lại", + "headerBtnAlt": "Tải lại và cập nhật công cụ MCP" + }, + "oap": { + "type": { + "all": "Tất cả công cụ", + "base": "Chỉ hiển thị Base", + "pro": "Chỉ hiển thị Pro" + }, + "sort": { + "title": "Sắp xếp", + "popular": "Phổ biến", + "new": "Mới" + }, + "tag": "Thẻ", + "no_search_data_title": "Không tìm thấy công cụ MCP", + "no_search_data": "Không tìm thấy kết quả tìm kiếm, vui lòng xóa từ khóa tìm kiếm hoặc điều chỉnh điều kiện lọc.", + "clear_filter": "Xóa bộ lọc", + "hint": "Máy chủ MCP cấp cao yêu cầu nâng cấp lên phiên bản Pro để cài đặt", + "high_cost_title": "Bật máy chủ MCP chi phí cao", + "high_cost_desc": "Bạn đã chọn máy chủ MCP tiêu tốn nhiều token. Vui lòng kiểm tra xem việc sử dụng gói của bạn có đủ không.", + "headerBtnAlt": "Thêm / Xem công cụ MCP OAP" + }, + "custom": { + "headerBtn": "Thêm / Chỉnh sửa cấu hình", + "headerBtnAlt": "Thêm / Chỉnh sửa công cụ tùy chỉnh", + "listAdd": "Thêm máy chủ MCP", + "titleAdd": "Thêm máy chủ MCP", + "titleEdit": "Chỉnh sửa {{tool}} MCP", + "titleEditJson": "Cài đặt công cụ MCP" + } + }, + "modelConfig": { + "title": "Cài đặt mô hình", + "customInstructions": "Lời nhắc tùy chỉnh", + "customInstructionsPlaceholder": "Nhập lời nhắc hệ thống tùy chỉnh...", + "customInstructionsDescription": "Các lời nhắc này sẽ được thêm vào cuối lời nhắc hệ thống của mỗi yêu cầu", + "saveInstructions": "Lưu hướng dẫn", + "customRulesSaved": "Đã lưu hướng dẫn tùy chỉnh", + "customRulesFailed": "Lưu hướng dẫn tùy chỉnh thất bại", + "modelDescription": "Tên mô hình để sử dụng", + "modelDescriptionHint": "Tên mô hình để sử dụng (Vui lòng nhập API Key trước để xem các mô hình khả dụng)" + }, + "common": { + "close": "Đóng", + "confirm": "Xác nhận", + "cancel": "Hủy", + "copy": "Sao chép", + "copySuccess": "Đã sao chép", + "zoomInImage": "Phóng to hình ảnh", + "copyImage": "Sao chép hình ảnh", + "copyImageUrl": "Sao chép URL hình ảnh", + "downloadImage": "Tải xuống hình ảnh", + "login": "Đăng nhập", + "signup": "Đăng ký", + "save": "Lưu", + "signout": "Đăng xuất" + }, + "models": { + "title": "Cài đặt mô hình", + "newProvider": "+ Thêm nhà cung cấp", + "parameters": "Cài đặt tham số", + "instructionsSetting": "Cài đặt hướng dẫn", + "listTitle": "Cấu hình nhà cung cấp mô hình", + "optional": "(Tùy chọn)", + "selfOptional": "(Tùy chọn)", + "unSupportModelCount": "Bạn đã chọn {{count}} mô hình không được hỗ trợ", + "deleteTitle": "Xác nhận xóa Key {{name}}?", + "deleteDescription": "Hành động này không thể hoàn tác.", + "deleteAllTitle": "Xác nhận xóa mô hình?", + "deleteAllDescription": "Sau khi xóa, không có mô hình nào khả dụng cho cuộc trò chuyện", + "deleteToast": "Đã xóa Key {{name}}", + "deleteFailed": "Xóa xác thực nhà cung cấp thất bại", + "providerMenu1": "Chỉnh sửa nhà cung cấp", + "providerMenu2": "Quản lý mô hình", + "providerMenu3": "Xóa", + "verifying": "Đang xác minh API Key và mô hình...", + "verifyingAbort": "Xác minh bị hủy, vui lòng thử lại sau", + "apiKeyError": "API Key không hợp lệ, vui lòng kiểm tra và nhập lại API Key của bạn.", + "closeAllTitle": "Xác nhận vô hiệu hóa?", + "closeAllDescription": "Sau khi vô hiệu hóa, không có mô hình nào khả dụng cho cuộc trò chuyện", + "noModelAlertTitle": "Không có mô hình khả dụng!", + "noModelAlertDescription": "Tất cả các mô hình đã chọn không được hỗ trợ, không thể trò chuyện", + "selectModelPlaceHolder": "Chọn mô hình...", + "noModelAlertOption": "Không có mô hình khả dụng", + "popupTitle": "Mô hình khả dụng", + "searchPlaceholder": "Tìm kiếm mô hình...", + "noResult": "Không có mô hình khả dụng", + "reloadModelList": "Tải lại", + "modelSaved": "Đã lưu mô hình", + "modelSaveFailed": "Lưu mô hình thất bại", + "parameterSaved": "Đã lưu tham số", + "parameterSaveFailed": "Lưu tham số thất bại", + "ignored": "Bỏ qua xác minh cho mô hình này", + "unSupportModel": "Mô hình không được hỗ trợ", + "unToolCallsSupport": "Gọi công cụ không được hỗ trợ", + "verify": "Xác minh", + "verifyIgnore": "Bỏ qua", + "verifyIgnoreAlt": "Nhắc nhở xác minh sẽ không được hiển thị nữa", + "verifyNextTime": "Sau", + "verifyNextTimeAlt": "Sẽ yêu cầu xác minh lần sau", + "verifyTitle": "! Phát hiện {{count}} mô hình chưa xác minh", + "verifyDesc": "Các mô hình sau chưa được xác minh. Bạn có muốn xác minh chúng không?", + "progressVerifying": "Đang xác minh mô hình, vui lòng đợi...", + "verifyMenu": { + "advanced": "Cài đặt nâng cao", + "verify": "Xác minh mô hình", + "ignore": "Bỏ qua xác minh", + "delete": "Xóa mô hình" + }, + "customModelID": { + "add": "+ ID mô hình tùy chỉnh", + "title": "ID mô hình tùy chỉnh", + "placeholder": "Nhập ID mô hình tùy chỉnh...", + "Error": { + "empty": "ID mô hình tùy chỉnh không được để trống", + "exist": "ID mô hình tùy chỉnh đã tồn tại" + } + }, + "copyContent": "Sao chép nội dung", + "editProviderTitle": "Chỉnh sửa cấu hình {{provider}}", + "hide": "Ẩn", + "display": "Hiển thị", + "copy": "Sao chép", + "modelSetting": "Cài đặt nâng cao", + "streamingModeTooltip": "Chế độ truyền trực tuyến là khi mô hình phản hồi, nó hiển thị nội dung dần dần, thay vì hiển thị tất cả cùng một lúc. Tắt nút, trong chế độ không truyền trực tuyến, sẽ đợi mô hình tạo nội dung hoàn chỉnh và hiển thị tất cả cùng một lúc, tránh các vấn đề tương thích với gọi công cụ trong mô hình.", + "streamingModeDescription": "Kiểm soát cách hiển thị phản hồi mô hình", + "streamingModeAlert": "Nhắc nhở: Một số mô hình chỉ hỗ trợ gọi công cụ trong chế độ truyền trực tuyến hoặc chế độ không truyền trực tuyến. Nên hiểu đầy đủ nhu cầu của bạn trước khi điều chỉnh tham số này.", + "customInput": "Đầu vào tùy chỉnh", + "addCustomParameter": "Thêm tham số tùy chỉnh", + "parameterName": "Tên tham số", + "parameterType": "Loại tham số", + "parameterValue": "Giá trị tham số", + "parameterNameDescription": "Nhập tên, như temperature", + "parameterTypeDescription": "Chọn loại", + "parameterValueDescription": "Vui lòng chọn loại tham số trước sau đó nhập giá trị", + "parameterNameDuplicate": "Tên tham số đã tồn tại", + "parameterTypeInt": "Số nguyên", + "parameterTypeFloat": "Số thập phân", + "parameterTypeString": "Chuỗi", + "parameterTypeIntDescription": "Phạm vi cho phép 0-1M", + "parameterTypeFloatDescription": "Phạm vi cho phép 0.0-1.0", + "parameterTypeStringDescription": "Vui lòng nhập chuỗi, như medium", + "reasoningLevelDescription": "Đặt độ sâu suy nghĩ của mô hình", + "reasoningLevelTooltip": "Thấp đại diện cho phản hồi nhanh, tập trung vào kết luận và không có chi tiết bổ sung, với lý luận trực tiếp và đơn giản. Trung bình cung cấp phản hồi với giải thích logic đầy đủ, bao gồm thông tin chính. Cao cung cấp phản hồi sâu sắc với phân tích và giải thích có cấu trúc và chi tiết.", + "tokenBudgetDescription": "Đặt giá trị lý luận ({{min}}~{{max}})", + "parameterVerify": "Xác minh tham số", + "verifyErrorInfo": "Chi tiết lỗi xác minh", + "verifyErrorMsg": "Mô hình không sử dụng bất kỳ công cụ nào trong quá trình xác minh, có thể do thiếu hỗ trợ hoặc không được kích hoạt. Do đó, không thể xác nhận liệu nó có hỗ trợ công cụ hay không.", + "verifyStatusSuccess": "Xác minh mô hình thành công, đã bật với cấu hình gốc", + "verifyStatusSuccessInPrompt": "Xác minh mô hình thành công, đã bật với MCP Prompts", + "verifyUnexpectedFailed": "Xác minh mô hình thất bại, đã xảy ra lỗi không xác định, vui lòng thử lại sau", + "oapUsageLimit": "Đã đạt giới hạn sử dụng, tạm thời không khả dụng" + }, + "system": { + "title": "Cài đặt hệ thống", + "language": "Ngôn ngữ hệ thống", + "languageDefault": "Mặc định hệ thống", + "languageDescription": "Ngôn ngữ được sử dụng để hiển thị giao diện hệ thống. Ngôn ngữ được sử dụng trong mô hình có thể được thay đổi trong trang cài đặt mô hình, điều này đề cập đến ngôn ngữ hiển thị trong giao diện Dive", + "theme": "Chế độ tối", + "themeDescription": "Chuyển đổi giữa mặc định hệ thống và chế độ tối", + "defaultInstructions": "speak in Vietnamese", + "autoDownload": "Tự động tải xuống cập nhật", + "autoDownloadDescription": "Tự động tải xuống phiên bản mới của DIVE khi người dùng khởi động lại hoặc nhấp vào nút \"Nâng cấp\" trên trang menu, phiên bản mới sẽ được kích hoạt", + "autoLaunch": "Tự động khởi chạy", + "autoLaunchDescription": "Tự động khởi động Dive AI khi hệ thống khởi động", + "minimalToTray": "Thu nhỏ xuống khay", + "minimalToTrayDescription": "Khi đóng cửa sổ, chương trình sẽ được thu nhỏ xuống khay hệ thống thay vì thoát hoàn toàn", + "loginTitle": "Đăng nhập OAP", + "loginDescription": "Sử dụng OpenAgentPlatform để đăng nhập, không cần kiến thức chuyên môn kỹ thuật để dễ dàng kết nối LLM, AI Agents và MCP Servers — Trải nghiệm các giải pháp thông minh ngay bây giờ!", + "personalInformationTitle": "Thông tin cá nhân", + "defaultSystemPrompt": "Lời nhắc hệ thống mặc định Dive", + "defaultSystemPromptDescription": "Lời nhắc hệ thống mặc định Dive được sử dụng làm lời nhắc hệ thống mặc định cho trò chuyện. Nó cho LLM biết rằng trò chuyện Dive hỗ trợ KaTeX / Markdown / Mermaid, v.v. Tính năng này tiêu tốn một số token, có thể làm cho phản hồi chậm hơn so với lời nhắc không có lời nhắc hệ thống. Mặt khác, nếu bị tắt, chất lượng phản hồi của LLM có thể giảm", + "usageAnalytics": "Truy cập trang Dashboard trong OAP Hub để xem", + "usageAnalyticsTitle": "Phân tích sử dụng", + "userEdit": "Truy cập trang Tài khoản trong OAP Hub để thực hiện thay đổi", + "planSectionTitle": "Sử dụng gói hiện tại", + "subscriptionDate": "Ngày đăng ký", + "remainingUsage": "Sử dụng còn lại", + "usageWarningTitle": "Đã đạt giới hạn sử dụng token.", + "usageWarning": "Hạn ngạch gói Pro sẽ được đặt lại vào tháng sau, hoặc mua gói token để sử dụng thêm. Mô hình cơ bản và MCP vẫn khả dụng.", + "BaseSubscriptionDate": "Không bao giờ hết hạn", + "BaseRemainingUsage": "Không giới hạn", + "BaseUsageWarning": "Gói Base bao gồm quyền truy cập vào Mô hình cơ bản và MCP cơ bản. Để sử dụng các mô hình và MCP khác, vui lòng nâng cấp gói của bạn từ Trang gói.", + "customPromptDescription": "Nếu bạn cần hướng dẫn tùy chỉnh bổ sung, vui lòng nhấp vào chức năng \"Lời nhắc tùy chỉnh\" bên dưới để thiết lập nó.", + "customPromptButton": "Lời nhắc tùy chỉnh", + "tokenPackageTitle": "Sử dụng gói token", + "tokenPackageHint": "Gói token không có ngày hết hạn và chỉ được sử dụng sau khi hạn ngạch gói hàng tháng cạn kiệt.", + "tokenPackageRemainingUsage": "Sử dụng còn lại", + "tokenPackageWarningTitle": "Hạn ngạch token đã hết.", + "tokenPackageWarning": "Bạn có thể nạp thêm sử dụng token tại OAPhub trang Dashboard.", + "skipTlsVerifyWarning": "Cảnh báo bảo mật: Bỏ qua xác minh chứng chỉ có thể giảm bảo mật kết nối. Nên sử dụng trong môi trường mạng đáng tin cậy." + }, + "toast": { + "copiedToClipboard": "Đã sao chép vào clipboard", + "copyFailed": "Sao chép thất bại", + "copiedImage": "Đã sao chép hình ảnh", + "downloadedImage": "Đã tải xuống hình ảnh" + }, + "keymap": { + "title": "Phím tắt", + "events": { + "chat-input_submit": "Gửi tin nhắn", + "chat-input_upload-file": "Tải file lên", + "chat-input_focus": "Tập trung đầu vào", + "chat-input_paste-last-message": "Dán tin nhắn cuối cùng", + "chat-message_copy-last": "Sao chép tin nhắn cuối cùng", + "chat_delete": "Xóa trò chuyện", + "global_new-chat": "Trò chuyện mới", + "global_toggle-sidebar": "Chuyển đổi thanh bên", + "global_close-layer": "Đóng cửa sổ", + "global_toggle-keymap-modal": "Chuyển đổi trợ giúp phím tắt" + } + }, + "update": { + "downloading": "Đang tải xuống...", + "readyToInstall": "Sẵn sàng cài đặt", + "clickToInstall": "Nhấp để cài đặt cập nhật" + }, + "login": { + "subtitle": "Dive AI là ứng dụng desktop mã nguồn mở tích hợp liền mạch các mô hình ngôn ngữ lớn khác nhau hỗ trợ gọi hàm. Thông qua giao diện sạch sẽ và trực quan, bạn có thể dễ dàng trò chuyện với AI tiên tiến, từ câu hỏi hàng ngày đến nhiệm vụ chuyên nghiệp, nhận được câu trả lời chính xác và biến nó thành trợ lý thông minh của bạn.", + "title1": "Sử dụng mô hình đã chuẩn bị của riêng bạn", + "description1": "Phù hợp cho chuyên gia AI nâng cao. Nếu bạn đã có cấu hình riêng của mình sẵn sàng, cho dù đó là Ollama cục bộ, llama.cpp hay API LLM từ xa từ Openrouter, OpenAI, Anthropic hoặc các công ty AI khác, vui lòng sử dụng tùy chọn này.", + "button1": "Đi đến cài đặt mô hình", + "title2": "Sử dụng OpenAgentPlatform", + "description2": "OAP giúp mọi người dễ dàng sử dụng các dịch vụ AI tiên tiến nhất, kết nối LLM, AI Agents và MCP Servers mà không cần chuyên môn kỹ thuật. Khám phá các khả năng vô hạn của AI và trải nghiệm các giải pháp thông minh ngay bây giờ.", + "button2": "Đăng ký OAP", + "button3": "Đăng nhập OAP" + }, + "InstallHostDependencies": { + "title": "Đang tải xuống các phụ thuộc máy chủ...", + "retry": "Thử lại", + "stop": "Dừng", + "tip": "Nếu xảy ra lỗi trong quá trình tải xuống, vui lòng đóng cửa sổ này trước và khởi động lại ứng dụng để tải xuống lại." + }, + "deeplink": { + "mcpInstallConfirm": "Thêm dịch vụ MCP stdio - Bạn sẽ thêm MCP qua lệnh sau, vui lòng xác nhận:" + } +} + diff --git a/src/views/Overlay/System.tsx b/src/views/Overlay/System.tsx index 82a34239..f823d3ed 100644 --- a/src/views/Overlay/System.tsx +++ b/src/views/Overlay/System.tsx @@ -41,6 +41,22 @@ const System = () => { { label: "Español", value: "es" }, { label: "日本語", value: "ja" }, { label: "한국어", value: "ko" }, + { label: "Français", value: "fr" }, + { label: "Deutsch", value: "de" }, + { label: "Polski", value: "pl" }, + { label: "Suomi", value: "fi" }, + { label: "Svenska", value: "sv" }, + { label: "Norsk", value: "no" }, + { label: "Italiano", value: "it" }, + { label: "Türkçe", value: "tr" }, + { label: "Русский", value: "ru" }, + { label: "Українська", value: "uk" }, + { label: "Bahasa Indonesia", value: "id" }, + { label: "ภาษาไทย", value: "th" }, + { label: "Tiếng Việt", value: "vi" }, + { label: "ພາສາລາວ", value: "lo" }, + { label: "Filipino", value: "fil" }, + { label: "Português", value: "pt" }, ] useEffect(() => {