Skip to content
Open
Show file tree
Hide file tree
Changes from 2 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@ core/lib/**
test_results.html
pre-install
.build
.idea/

# docs
docs/yarn.lock
Expand Down
9 changes: 6 additions & 3 deletions web-app/src/containers/ParametersSection.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@ import {
isModelLevelRejected,
} from '@/lib/providerCaps'
import { DynamicControllerSetting } from '@/containers/dynamicControllerSetting'
import { useTranslation } from '@/i18n/react-i18next-compat'

export interface ParametersSectionProps {
params: Record<string, unknown>
Expand Down Expand Up @@ -54,6 +55,7 @@ export function ParametersSection({
providerId,
modelId,
}: ParametersSectionProps) {
const { t } = useTranslation()
const modelRejects = (key: string) =>
!!(providerId && modelId && isModelLevelRejected(key, providerId, modelId))
const supportIndex = useMemo(() => {
Expand Down Expand Up @@ -118,7 +120,7 @@ export function ParametersSection({
<div className="space-y-3">
{!hasAny && (
<div className="text-xs text-muted-foreground py-2">
No overrides — using model defaults.
{t('assistants:noParameter')}
</div>
)}

Expand Down Expand Up @@ -319,6 +321,7 @@ function AddParameterMenu({
onAddGroup,
modelRejects,
}: AddParameterMenuProps) {
const { t } = useTranslation()
const items = useMemo(() => {
return paramCategories
.map((cat) => {
Expand Down Expand Up @@ -351,7 +354,7 @@ function AddParameterMenu({
if (items.length === 0) {
return (
<div className="text-xs text-muted-foreground">
No tunable parameters for this provider.
{t('assistants:noTunableParams')}
</div>
)
}
Expand All @@ -361,7 +364,7 @@ function AddParameterMenu({
<DropdownMenuTrigger asChild>
<Button variant="outline" size="sm" className="w-full justify-start">
<IconPlus size={14} className="mr-1" />
Add parameter
{t('assistants:addParameter')}
</Button>
</DropdownMenuTrigger>
<DropdownMenuContent align="start" className="w-72 max-h-[60vh] overflow-y-auto">
Expand Down
2 changes: 1 addition & 1 deletion web-app/src/containers/dialogs/AddEditMCPServer.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -449,7 +449,7 @@ export default function AddEditMCPServer({

<div className="space-y-2">
<label className="text-sm mb-2 inline-block">
Transport Type
{t('mcp-servers:editJson.transportType')}
</label>
<RadioGroup
value={transportType}
Expand Down
11 changes: 10 additions & 1 deletion web-app/src/locales/de-DE/assistants.json
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@
"enterInstructions": "Anweisungen eingeben",
"predefinedParameters": "Vordefinierte Parameter",
"parameters": "Parameter",
"noParameter": "Keine Parameter — Nutzte Model Voreinstellung.",
"key": "Schlüssel",
"value": "Wert",
"stringValue": "String",
Expand All @@ -31,5 +32,13 @@
"personality": "Persönlichkeit",
"capabilities": "Fähigkeiten",
"instructionsDateHint": "Tipp: Verwenden Sie {{current_date}}, um das heutige Datum einzufügen.",
"maxToolSteps": "Maximale Werkzeugschritte"
"maxToolSteps": "Maximale Werkzeugschritte",
"setAsDefault": "Als Standard-Assistenten verwenden",
"isDefault": "Standard",
"defaultAssistantSection": "Standard Assistent",
"defaultAssistantDesc": "Wird benutzt für neue Chats",
"allAssistants": "Alle Assistenten",
"lastUsed": "Zuletzt verwendet",
"addParameter": "Parameter hinzufügen",
"noTunableParams": "Keine veränderbaren Parameter setzbar."
}
3 changes: 2 additions & 1 deletion web-app/src/locales/de-DE/mcp-servers.json
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,8 @@
"errorServerName": "Servername ist erforderlich und darf nicht leer sein",
"errorMissingServerNameKey": "JSON muss als {\"serverName\": {config}} strukturiert sein - fehlender Servername-Schlüssel",
"errorInvalidType": "Ungültiger Typ '{{type}}' für Server '{{serverName}}'. Typ muss 'stdio', 'http' oder 'sse' sein",
"save": "Speichern"
"save": "Speichern",
"transportType": "Transport Methode"
Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Not sure if this is really a meaningful translation...

},
"checkParams": "Bitte überprüfe die Parameter gemäß dem Tutorial.",
"title": "MCP Server",
Expand Down
73 changes: 66 additions & 7 deletions web-app/src/locales/de-DE/settings.json
Original file line number Diff line number Diff line change
Expand Up @@ -61,6 +61,8 @@
"application": "Anwendung",
"newChat": "Neuer Chat",
"newChatDesc": "Neuen Chat anlegen.",
"newProject": "Neues Projekt",
"newProjectDesc": "Öffne den Projekt-Erstell-Dialog.",
"toggleSidebar": "Seitenleiste umschalten",
"toggleSidebarDesc": "Seitenleiste ein- oder ausblenden.",
"zoomIn": "Vergrößern",
Expand All @@ -75,15 +77,27 @@
"newLineDesc": "Neue Zeile einfügen.",
"shiftEnter": "Shift + Enter",
"navigation": "Navigation",
"search": "Suche",
"searchDesc": "Öffne den Suchdialog.",
"goToSettings": "Gehe zu den Einstellungen",
"goToSettingsDesc": "Einstellungen öffnen."
},
"interface": {
"title": "Erscheinungsbild",
"title": "Darstellungseinstellungen",
"theme": "Theme",
"themeDesc": "Dem Betriebssystem anpassen.",
"fontSize": "Schriftgröße",
"fontSizeDesc": "Einstellen der App Schriftgröße",
"accentColor": "Akzentfarbe",
"accentColorDesc": "Lege die Akzentfarbe für die Anwendung fest",
"notificationPosition": "Position für Benachrichtigungen",
"notificationPositionDesc": "Position im Fenster für Benachrichtigungen. Unter Windows ist der Standard unten rechts, damit diese nicht die Fenstereinstellungen verdecken.",
"notificationPositionTopRight": "Oben rechts",
"notificationPositionTopLeft": "Oben links",
"notificationPositionBottomRight": "Unten rechts",
"notificationPositionBottomLeft": "Unten links",
"showTokenSpeed": "Token Geschwindigkeit anzeigen",
"showTokenSpeedDesc": "Zeige die Geschwindigkeit der generierten Token pro Sekunde unter der Nachricht des Chat-Assistenten direkt an. Wenn deaktiviert, kann durch einen Klick auf das Info-Icon die Geschwindigkeit angezeigt werden.",
"windowBackground": "Fenster Hintergrund",
"windowBackgroundDesc": "Lege die Hintergrundfarbe des App-Fensters fest.",
"appMainView": "App-Hauptansicht",
Expand All @@ -96,7 +110,7 @@
"destructiveDesc": "Lege die Farbe für destruktive Aktionen fest.",
"resetToDefault": "Auf Werkseinstellungen zurücksetzen",
"resetToDefaultDesc": "Setzt alle Darstellungseinstellungen auf die Standardeinstellungen zurück.",
"resetInterfaceSuccess": "Erscheinungsbild erfolgreich zurückgesetzt",
"resetInterfaceSuccess": "Darstellungseinstellungen erfolgreich zurückgesetzt",
"resetInterfaceSuccessDesc": "Alle Darstellungseinstellungen wurden auf die Standardeinstellungen zurückgesetzt.",
"tokenCounterCompact": "Kompakter Token-Zähler",
"tokenCounterCompactDesc": "Token-Zähler im Chat-Eingabefeld anzeigen. Wenn deaktiviert, wird der Token-Zähler unter dem Eingabefeld angezeigt.",
Expand Down Expand Up @@ -131,7 +145,10 @@
"freeOf": "frei von",
"driverVersion": "Treiber Version",
"computeCapability": "Rechenfähigkeit",
"systemMonitor": "System Monitor"
"systemMonitor": "System Monitor",
"refresh": "Aktualisieren",
"loadingDevices": "Lade Geräte...",
"errorLoadingDevices": "Fehler beim Laden der Geräte"
},
"httpsProxy": {
"proxy": "Proxy",
Expand All @@ -146,7 +163,7 @@
"noProxyDesc": "Eine durch Kommas getrennte Liste von Hosts, um den Proxy zu umgehen.",
"noProxyPlaceholder": "localhost,127.0.0.1,.local",
"sslVerification": "SSL Verifikation",
"ignoreSsl": "SSL Certificates ignorieren",
"ignoreSsl": "SSL Zertifikate ignorieren",
"ignoreSslDesc": "Erlaube selbstsignierte oder nicht verifizierte Zertifikate. Dies kann für einige Proxys erforderlich sein, verringert aber die Sicherheit. Aktiviere diese Option nur, wenn Du Deinem Proxy vertraust.",
"proxySsl": "Proxy SSL",
"proxySslDesc": "Validieren des SSL-Zertifikats, wenn eine Verbindung mit dem Proxy hergestellt wird.",
Expand All @@ -171,15 +188,16 @@
"swaggerDocsDesc": "Zeige interaktive API-Dokumentation (Swagger UI) an.",
"openDocs": "Dokumentation öffnen",
"startupConfiguration": "Startkonfiguration",
"runOnStartup": "Auto start",
"runOnStartup": "Autostart",
"runOnStartupDesc": "Starte den lokalen API-Server automatisch beim Anwendungsstart. Verwendet das zuletzt verwendete Modell oder wählt das erste verfügbare Modell, falls nicht verfügbar.",
"configuration": "Konfigurieren",
"serverConfiguration": "Server Konfiguration",
"serverHost": "Server Host",
"serverHostDesc": "Netzwerkadresse für den Server.",
"serverPort": "Server Port",
"serverPortDesc": "Portnummer für den API Server.",
"apiPrefix": "API Prefix",
"apiPrefixDesc": "Pfadprefix für den API Endpunkt.",
"apiPrefixDesc": "Pfadpräfix für den API Endpunkt.",
"apiKey": "API Schlüssel",
"apiKeyDesc": "Authentifiziere Anfragen mit einem API-Schlüssel.",
"trustedHosts": "Vertrauenswürdige Hosts",
Expand All @@ -190,7 +208,16 @@
"verboseLogs": "Ausführliche Server Logs",
"verboseLogsDesc": "Aktiviere detaillierte Server Logs zum Debuggen",
"proxyTimeout": "Zeitüberschreitung bei der Anfrage",
"proxyTimeoutDesc": "Wartezeit auf eine Antwort vom lokalen Modell in Sekunden."
"proxyTimeoutDesc": "Wartezeit auf eine Antwort vom lokalen Modell in Sekunden.",
"defaultModel": "Standard Model lokaler API-Server",
"defaultModelDesc": "Lokales Model, welches beim Start des Servers standardmäßig geladen wird.",
"defaultModelPlaceholder": "Wähle ein lokales Model",
"serverStatus": "Server Status",
"serverStatusRunning": "Der Server ist aktiv.",
"serverStatusStopped": "Der Server ist angehalten.",
"openInNewWindow": "In neuem Fenster öffnen",
"mcpOnServer": "Erlaube Toolnutzung",
"mcpOnServerDesc": "Erlaube Serverseitige Toolnutzung."
},
"privacy": {
"analytics": "Analytik",
Expand Down Expand Up @@ -258,6 +285,38 @@
"extensions": {
"title": "Erweiterungen"
},
"attachments": {
"subtitle": "Einstellungen für Dateianhänge, Dateigröße und Suche.",
"featureTitle": "Feature",
"enable": "Dateianhänge erlauben",
"enableDesc": "Erlaube das Hochladen sowie die Indexierung von Dokumente für die Suche.",
"parseMode": "Parser Einstellung",
"parseModeDesc": "Wähle, wie geparste Dokumente zu Chats hinzugefügt werden sollen.",
"parseModeAuto": "Automatisch",
"parseModeInline": "Zu Chat hinzufügen",
"parseModeEmbeddings": "In Chat einbetten",
"parseModePrompt": "Jedes mal nachfragen",
"autoInlineThreshold": "Datei Token Schwellenwert",
"autoInlineThresholdDesc": "Anteil des lokalen Model-Kontextes, welcher maximal für Dateien genutzt werden darf.",
"limitsTitle": "Grenzen",
Comment thread
Schwachinformatiker marked this conversation as resolved.
"maxFile": "Maximale Dateigröße in Megabyte (MB)",
"maxFileDesc": "Maximale Größe einzelner Dateien. Wird beim Hochladen und Verarbeiten berücksichtigt.",
"retrievalTitle": "Suche",
"topK": "Top-K",
"topKDesc": "Anzahl der zurückgegebenen Textpassagen.",
"threshold": "Ähnlichkeitsschwellenwert",
"thresholdDesc": "Wert zwischen 0-1, welcher die minimale Ähnlichkeit festlegt. Wird nur in linear cosine search genutzt, nicht ANN.",
"searchMode": "Vektor Suchmodus",
"searchModeDesc": "Wähle zwischen sqlite-vec ANN, linear cosine oder Automodus.",
"searchModeAuto": "Automatisch (empfohlen)",
"searchModeAnn": "ANN (sqlite-vec)",
"searchModeLinear": "Linear",
"chunkingTitle": "Chunking",
"chunkSize": "Chunk Größe (Zeichen)",
"chunkSizeDesc": "Ungefähre maximale Zeichenanzahl pro Chunk für Einbettungen.",
"chunkOverlap": "Chunk Überlappung (Zeichen)",
"chunkOverlapDesc": "Anzahl der Zeichen welche bei aufeinanderfolgenden Chunks überlappen."
},
"dialogs": {
"changeDataFolder": {
"title": "Speicherort des Datenordners ändern",
Expand Down
5 changes: 4 additions & 1 deletion web-app/src/locales/en/assistants.json
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@
"enterInstructions": "Enter instructions",
"predefinedParameters": "Predefined Parameters",
"parameters": "Parameters",
"noParameter": "No overrides — using model defaults.",
"key": "Key",
"value": "Value",
"stringValue": "String",
Expand All @@ -37,5 +38,7 @@
"defaultAssistantSection": "Default Assistant",
"defaultAssistantDesc": "Used when starting a new chat",
"allAssistants": "All Assistants",
"lastUsed": "Last used"
"lastUsed": "Last used",
"addParameter": "Add parameter",
"noTunableParams": "No tunable parameters for this provider."
}
3 changes: 2 additions & 1 deletion web-app/src/locales/en/mcp-servers.json
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,8 @@
"errorServerName": "Server name is required and cannot be empty",
"errorMissingServerNameKey": "JSON must be structured as {\"serverName\": {config}} - missing server name key",
"errorInvalidType": "Invalid type '{{type}}' for server '{{serverName}}'. Type must be 'stdio', 'http', or 'sse'",
"save": "Save"
"save": "Save",
"transportType": "Transport Type"
},
"checkParams": "Please check the parameters according to the tutorial.",
"title": "MCP Servers",
Expand Down
17 changes: 15 additions & 2 deletions web-app/src/locales/en/settings.json
Original file line number Diff line number Diff line change
Expand Up @@ -88,6 +88,8 @@
"themeDesc": "Match the OS theme.",
"fontSize": "Font Size",
"fontSizeDesc": "Adjust the app's font size.",
"accentColor": "Accent color",
"accentColorDesc": "Customize the accent color of the application.",
"notificationPosition": "Notification position",
"notificationPositionDesc": "Where toast notifications appear. On Windows, the default is bottom-right so popups do not cover the window controls.",
"notificationPositionTopRight": "Top right",
Expand Down Expand Up @@ -149,7 +151,10 @@
"freeOf": "free of",
"driverVersion": "Driver Version",
"computeCapability": "Compute Capability",
"systemMonitor": "System Monitor"
"systemMonitor": "System Monitor",
"refresh": "Refresh",
"loadingDevices": "Loading devices...",
"errorLoadingDevices": "Error loading devices"
},
"httpsProxy": {
"proxy": "Proxy",
Expand Down Expand Up @@ -191,6 +196,7 @@
"startupConfiguration": "Startup Configuration",
"runOnStartup": "Auto start",
"runOnStartupDesc": "Automatically start the Local API Server when the application launches.",
"configuration": "Configuration",
"serverConfiguration": "Server Configuration",
"serverHost": "Server Host",
"serverHostDesc": "Network address for the server.",
Expand All @@ -211,7 +217,14 @@
"proxyTimeoutDesc": "Time to wait for a response from the local model, seconds.",
"defaultModel": "Default Model Local API Server",
"defaultModelDesc": "Local model to load automatically when the server starts.",
"defaultModelPlaceholder": "Select a local model"
"defaultModelPlaceholder": "Select a local model",
"serverStatus": "Server Status",
"serverStatusRunning": "The server is currently running.",
"serverStatusStopped": "The server is stopped.",
"openInNewWindow": "Open in New Window",
"mcpOnServer": "Execute tools on server",
"mcpOnServerDesc": "Run tools server-side for chat endpoints."

},
"privacy": {
"analytics": "Analytics",
Expand Down
6 changes: 3 additions & 3 deletions web-app/src/routes/settings/hardware.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -303,16 +303,16 @@ function HardwareContent() {
onClick={handleRefreshHardware}
disabled={isLoading}
>
{isLoading ? '...' : 'Refresh'}
{isLoading ? '...' : t('settings:hardware.refresh')}
</Button>
</div>
}
>
{llamacppDevicesLoading ? (
<CardItem title="Loading devices..." actions={<></>} />
<CardItem title={t('settings:hardware.loadingDevices')} actions={<></>} />
) : llamacppDevicesError ? (
<CardItem
title="Error loading devices"
title={t('settings:hardware.errorLoadingDevices')}
actions={
<span className="text-destructive text-sm">
{llamacppDevicesError}
Expand Down
4 changes: 2 additions & 2 deletions web-app/src/routes/settings/interface.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -47,8 +47,8 @@ function InterfaceSettings() {
actions={<FontSizeSwitcher />}
/>
<CardItem
title="Accent color"
description="Customize the accent color of the application."
title={t('settings:interface.accentColor')}
description={t('settings:interface.accentColorDesc')}
className="flex-col sm:flex-row items-start sm:items-center sm:justify-between gap-y-2"
actions={<AccentColorPicker />}
/>
Expand Down
Loading