diff --git a/go.mod b/go.mod
index c3c05f96d..89e25c598 100644
--- a/go.mod
+++ b/go.mod
@@ -12,7 +12,7 @@ require (
github.com/aws/aws-sdk-go-v2/config v1.32.17
github.com/aws/aws-sdk-go-v2/service/bedrockruntime v1.50.6
github.com/bwmarrin/discordgo v0.29.0
- github.com/caarlos0/env/v11 v11.4.0
+ github.com/caarlos0/env/v11 v11.4.1
github.com/charmbracelet/lipgloss v1.1.0
github.com/creack/pty v1.1.24
github.com/eclipse/paho.mqtt.golang v1.5.1
@@ -31,7 +31,7 @@ require (
github.com/mymmrac/telego v1.9.0
github.com/open-dingtalk/dingtalk-stream-sdk-go v0.9.1
github.com/openai/openai-go/v3 v3.22.0
- github.com/pion/rtp v1.10.1
+ github.com/pion/rtp v1.10.2
github.com/pion/webrtc/v3 v3.3.6
github.com/pmezard/go-difflib v1.0.0
github.com/rs/zerolog v1.35.1
diff --git a/go.sum b/go.sum
index 27fbdab1d..d680a6f08 100644
--- a/go.sum
+++ b/go.sum
@@ -63,8 +63,8 @@ github.com/bytedance/sonic v1.15.1 h1:nJD5PmM0vY7J8CT6MxoqbVAAMhkSmV2HgRAUrrpLoO
github.com/bytedance/sonic v1.15.1/go.mod h1:mT2NbXunuaEbnZ+mRIX/vYqKISmgEuHFDI4UzmKx2SA=
github.com/bytedance/sonic/loader v0.5.1 h1:Ygpfa9zwRCCKSlrp5bBP/b/Xzc3VxsAW+5NIYXrOOpI=
github.com/bytedance/sonic/loader v0.5.1/go.mod h1:AR4NYCk5DdzZizZ5djGqQ92eEhCCcdf5x77udYiSJRo=
-github.com/caarlos0/env/v11 v11.4.0 h1:Kcb6t5kIIr4XkoQC9AF2j+8E1Jsrl3Wz/hhm1LtoGAc=
-github.com/caarlos0/env/v11 v11.4.0/go.mod h1:qupehSf/Y0TUTsxKywqRt/vJjN5nz6vauiYEUUr8P4U=
+github.com/caarlos0/env/v11 v11.4.1 h1:fYwH0sWEsBSMPG7t4e/PEfTFzrWrpjyygXyUnWiSwEw=
+github.com/caarlos0/env/v11 v11.4.1/go.mod h1:qupehSf/Y0TUTsxKywqRt/vJjN5nz6vauiYEUUr8P4U=
github.com/cespare/xxhash/v2 v2.1.2/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs=
github.com/cespare/xxhash/v2 v2.2.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs=
github.com/charmbracelet/colorprofile v0.2.3-0.20250311203215-f60798e515dc h1:4pZI35227imm7yK2bGPcfpFEmuY1gc2YSTShr4iJBfs=
@@ -221,8 +221,8 @@ github.com/petermattis/goid v0.0.0-20260330135022-df67b199bc81 h1:WDsQxOJDy0N1VR
github.com/petermattis/goid v0.0.0-20260330135022-df67b199bc81/go.mod h1:pxMtw7cyUw6B2bRH0ZBANSPg+AoSud1I1iyJHI69jH4=
github.com/pion/randutil v0.1.0 h1:CFG1UdESneORglEsnimhUjf33Rwjubwj6xfiOXBa3mA=
github.com/pion/randutil v0.1.0/go.mod h1:XcJrSMMbbMRhASFVOlj/5hQial/Y8oH/HVo7TBZq+j8=
-github.com/pion/rtp v1.10.1 h1:xP1prZcCTUuhO2c83XtxyOHJteISg6o8iPsE2acaMtA=
-github.com/pion/rtp v1.10.1/go.mod h1:rF5nS1GqbR7H/TCpKwylzeq6yDM+MM6k+On5EgeThEM=
+github.com/pion/rtp v1.10.2 h1:l+f6tTDcAH6xwepaAoW791ddhuYsJlqRATOzirO04Mo=
+github.com/pion/rtp v1.10.2/go.mod h1:Au8fc6cEByy8RLTwKTQTEeQqDB/SJDxwL4mZuxYA5Pk=
github.com/pion/webrtc/v3 v3.3.6 h1:7XAh4RPtlY1Vul6/GmZrv7z+NnxKA6If0KStXBI2ZLE=
github.com/pion/webrtc/v3 v3.3.6/go.mod h1:zyN7th4mZpV27eXybfR/cnUf3J2DRy8zw/mdjD9JTNM=
github.com/pkg/diff v0.0.0-20210226163009-20ebb0f2a09e/go.mod h1:pJLUxLENpZxwdsKMEsNbx1VGcRFpLqf3715MtcvvzbA=
@@ -354,8 +354,6 @@ golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug
golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs=
golang.org/x/net v0.10.0/go.mod h1:0qNGK6F8kojg2nk9dLZ2mShWaEBan6FAoqfSigmmuDg=
golang.org/x/net v0.19.0/go.mod h1:CfAk/cbD4CthTvqiEl8NpboMuiuOYsAr/7NOjZJtv1U=
-golang.org/x/net v0.54.0 h1:2zJIZAxAHV/OHCDTCOHAYehQzLfSXuf/5SoL/Dv6w/w=
-golang.org/x/net v0.54.0/go.mod h1:Sj4oj8jK6XmHpBZU/zWHw3BV3abl4Kvi+Ut7cQcY+cQ=
golang.org/x/net v0.55.0 h1:bcvxaJn3e1U6InsFWt1JUq1aSjnRxLzT2rtD2KfkDF8=
golang.org/x/net v0.55.0/go.mod h1:L5U2KuzuOe1lY7Z+aWVIKK6qEeJXnXV9yzGA+WCHJww=
golang.org/x/oauth2 v0.23.0/go.mod h1:XYTD2NtWslqkgxebSiOHnXEap4TF09sJSc7H1sXbhtI=
@@ -390,8 +388,6 @@ golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.15.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
-golang.org/x/sys v0.44.0 h1:ildZl3J4uzeKP07r2F++Op7E9B29JRUy+a27EibtBTQ=
-golang.org/x/sys v0.44.0/go.mod h1:4GL1E5IUh+htKOUEOaiffhrAeqysfVGipDYzABqnCmw=
golang.org/x/sys v0.45.0 h1:dO4czNzziLiiXplLQgBCEpCvXQ3dnkn0SdaZSYdQ+FY=
golang.org/x/sys v0.45.0/go.mod h1:4GL1E5IUh+htKOUEOaiffhrAeqysfVGipDYzABqnCmw=
golang.org/x/term v0.0.0-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw=
diff --git a/web/frontend/src/components/app-header.tsx b/web/frontend/src/components/app-header.tsx
index 700cc21e0..30c05ee45 100644
--- a/web/frontend/src/components/app-header.tsx
+++ b/web/frontend/src/components/app-header.tsx
@@ -294,6 +294,9 @@ export function AppHeader() {
i18n.changeLanguage("zh")}>
简体中文
+ i18n.changeLanguage("cs")}>
+ Čeština
+
diff --git a/web/frontend/src/i18n/index.ts b/web/frontend/src/i18n/index.ts
index 4da7b3f0d..8c0248915 100644
--- a/web/frontend/src/i18n/index.ts
+++ b/web/frontend/src/i18n/index.ts
@@ -1,4 +1,5 @@
import dayjs from "dayjs"
+import "dayjs/locale/cs"
import "dayjs/locale/en"
import "dayjs/locale/pt-br"
import "dayjs/locale/zh-cn"
@@ -11,6 +12,7 @@ import { initReactI18next } from "react-i18next"
import en from "./locales/en.json"
import ptBr from "./locales/pt-br.json"
import zh from "./locales/zh.json"
+import cs from "./locales/cs.json"
dayjs.extend(relativeTime)
dayjs.extend(localizedFormat)
@@ -34,6 +36,9 @@ i18n
zh: {
translation: zh,
},
+ cs: {
+ translation: cs,
+ },
},
fallbackLng: "en",
debug: false,
@@ -48,6 +53,8 @@ i18n.on("languageChanged", (lng) => {
dayjs.locale("zh-cn")
} else if (lng.startsWith("pt")) {
dayjs.locale("pt-br")
+ } else if (lng.startsWith("cs")) {
+ dayjs.locale("cs")
} else {
dayjs.locale("en")
}
diff --git a/web/frontend/src/i18n/locales/cs.json b/web/frontend/src/i18n/locales/cs.json
new file mode 100644
index 000000000..8f3fa9a25
--- /dev/null
+++ b/web/frontend/src/i18n/locales/cs.json
@@ -0,0 +1,958 @@
+{
+ "navigation": {
+ "chat": "Chat",
+ "model_group": "Modely",
+ "models": "Modely",
+ "credentials": "Přihlašovací údaje",
+ "agent_group": "Agent",
+ "hub": "Hub",
+ "skills": "Dovednosti",
+ "tools": "Nástroje",
+ "services": "Služby",
+ "channels_group": "Kanály",
+ "show_more_channels": "Více",
+ "show_less_channels": "Méně",
+ "config": "Nastavení",
+ "logs": "Logy"
+ },
+ "launcherLogin": {
+ "title": "Přihlášení",
+ "description": "Zadejte heslo k dashboardu pro pokračení.",
+ "passwordLabel": "Heslo",
+ "passwordPlaceholder": "Zadejte heslo",
+ "submit": "Přihlásit se",
+ "errorInvalid": "Nesprávné heslo. Zkuste to znovu.",
+ "errorNetwork": "Chyba sítě. Zkuste to znovu."
+ },
+ "launcherSetup": {
+ "title": "Nastavení hesla k dashboardu",
+ "description": "Zvolte heslo pro ochranu přístupu k dashboardu. Budete ho zadávat při každém přihlášení.",
+ "passwordLabel": "Heslo",
+ "passwordPlaceholder": "Alespoň 8 znaků",
+ "confirmLabel": "Potvrzení hesla",
+ "confirmPlaceholder": "Zopakujte heslo",
+ "submit": "Nastavit heslo",
+ "errorMismatch": "Hesla se neshodují.",
+ "errorNetwork": "Chyba sítě. Zkuste to znovu."
+ },
+ "chat": {
+ "welcome": "Jak vám mohu dnes pomoci?",
+ "welcomeDesc": "Zeptejte se mě na počasí, nastavení nebo jiné úkoly. Jsem tu, abych vám pomohl.",
+ "placeholder": "Napište zprávu...",
+ "disabledPlaceholder": {
+ "gatewayUnknown": "Chat nedostupný: stav gateway se stále zjišťuje. Počkejte chvíli, pak stránku obnovte nebo restartujte Launcher.",
+ "gatewayStarting": "Chat nedostupný: gateway se spouští. Počkejte na dokončení spuštění a zkuste to znovu.",
+ "gatewayRestarting": "Chat nedostupný: gateway se restartuje. Počkejte na dokončení restartu.",
+ "gatewayStopping": "Chat nedostupný: gateway se zastavuje. Počkejte na zastavení a pak gateway spusťte znovu.",
+ "gatewayStopped": "Chat nedostupný: gateway není spuštěna. Klikněte na Spustit gateway v horní liště a zkuste to znovu.",
+ "gatewayError": "Chat nedostupný: gateway je ve stavu chyby. Zkontrolujte logy a restartujte gateway nebo Launcher.",
+ "websocketConnecting": "Připojování ke chat službě... Čekejte prosím.",
+ "websocketDisconnected": "Chat nedostupný: WebSocket spojení bylo přerušeno. Zkontrolujte síť a stav gateway, obnovte stránku nebo restartujte Launcher.",
+ "websocketError": "Chat nedostupný: WebSocket spojení selhalo. Zkontrolujte síť a stav gateway a zkuste to znovu.",
+ "noDefaultModel": "Chat nedostupný: žádný výchozí model není vybrán. Nastavte výchozí model na stránce Modely."
+ },
+ "newChat": "Nový chat",
+ "notConnected": "Gateway není spuštěna. Spusťte ji pro zahájení chatu.",
+ "thinking": {
+ "step1": "Přemýšlím...",
+ "step2": "Analyzuji váš požadavek...",
+ "step3": "Připravuji odpověď...",
+ "step4": "Už brzy..."
+ },
+ "reasoningLabel": "Uvažování",
+ "toolCallsLabel": "Volání nástrojů",
+ "toolCallExplanationLabel": "Poznámka k volání",
+ "toolCallFunctionLabel": "Shrnutí volání",
+ "toolCallArgumentsLabel": "Argumenty",
+ "showAssistantDetails": "Zobrazit úvahy a volání nástrojů",
+ "assistantDetailVisibility": {
+ "none": "Skrýt oboje",
+ "thought": "Zobrazit jen úvahy",
+ "toolCalls": "Zobrazit jen volání nástrojů",
+ "all": "Zobrazit oboje"
+ },
+ "toolLabel": "Nástroj",
+ "codeLabel": "Kód",
+ "copyMessage": "Kopírovat zprávu",
+ "copyCode": "Kopírovat kód",
+ "copiedLabel": "Zkopírováno",
+ "expandCode": "Rozbalit kód",
+ "collapseCode": "Sbalit kód",
+ "history": "Historie",
+ "noHistory": "Zatím žádná historie chatu",
+ "historyLoadFailed": "Načtení historie chatu selhalo",
+ "historyOpenFailed": "Otevření historie chatu selhalo",
+ "loadingMore": "Načítám další...",
+ "deleteSession": "Smazat relaci",
+ "messagesCount": "{{count}} zpráv",
+ "noModel": "Vyberte model",
+ "inputDisabled": {
+ "notConnected": "Gateway není spuštěna. Spusťte ji pro zahájení chatu.",
+ "noModel": "Žádný výchozí model není nastaven. Přejděte na stránku Modely."
+ },
+ "sendMessage": "Odeslat zprávu",
+ "sendHint": "Enter pro odeslání\nShift + Enter pro nový řádek",
+ "contextTitle": "Kontext",
+ "contextDetail": "Zobrazit detail",
+ "attachImage": "Přidat obrázky",
+ "removeImage": "Odebrat obrázek",
+ "uploadedImage": "Nahraný obrázek",
+ "invalidImage": "\"{{name}}\" není podporovaný formát obrázku.",
+ "imageTooLarge": "\"{{name}}\" překračuje limit {{size}}.",
+ "imageReadFailed": "Čtení souboru \"{{name}}\" selhalo.",
+ "empty": {
+ "noConfiguredModel": "Žádný model není nakonfigurován",
+ "noConfiguredModelDescription": "Před zahájením chatu musíte nakonfigurovat alespoň jeden AI model s API klíčem.",
+ "goToModels": "Přejít na Modely",
+ "noSelectedModel": "Žádný model není vybrán",
+ "noSelectedModelDescription": "Máte nakonfigurované modely, ale žádný není nastaven jako výchozí. Před zahájením chatu vyberte model.",
+ "notRunning": "Gateway není spuštěna",
+ "notRunningDescription": "Pro zahájení chatu spusťte gateway. Použijte tlačítko Spustit gateway v horní liště."
+ },
+ "modelGroup": {
+ "apikey": "API Key",
+ "oauth": "OAuth",
+ "local": "Lokální"
+ }
+ },
+ "header": {
+ "logout": {
+ "tooltip": "Odhlásit se",
+ "confirm": "Odhlásit se",
+ "description": "Opravdu se chcete odhlásit z dashboardu?"
+ },
+ "gateway": {
+ "stopDialog": {
+ "title": "Zastavit gateway?",
+ "description": "Opravdu chcete gateway zastavit? Tím se ukončí aktivní chat relace a zastaví inference.",
+ "confirm": "Zastavit gateway"
+ },
+ "action": {
+ "start": "Spustit gateway",
+ "stop": "Zastavit gateway",
+ "restart": "Restartovat gateway"
+ },
+ "status": {
+ "starting": "Spouštění gateway...",
+ "restarting": "Restartování gateway...",
+ "stopping": "Zastavování gateway..."
+ },
+ "restartRequired": "Změny konfigurace se projeví až po restartu gateway."
+ }
+ },
+ "common": {
+ "cancel": "Zrušit",
+ "close": "Zavřít",
+ "save": "Uložit",
+ "saving": "Ukládám...",
+ "reset": "Resetovat",
+ "confirm": "Potvrdit",
+ "fix": "Opravit",
+ "saveChangesTitle": "Máte neuložené změny konfigurace",
+ "restartRequiredTitle": "Vyžadován restart gateway",
+ "restartRequiredDesc": "Nejnovější konfigurace {{name}} byla uložena. Pro aktivaci restartujte gateway."
+ },
+ "labels": {
+ "loading": "Načítám..."
+ },
+ "footer": {
+ "version": "Verze",
+ "commit": "Commit",
+ "build": "Build",
+ "version_unknown": "Neznámá"
+ },
+ "credentials": {
+ "description": "Správa OAuth a token přihlašovacích údajů pro podporované providery.",
+ "loading": "Načítám přihlašovací údaje...",
+ "providers": {
+ "openai": {
+ "description": "Podporuje browser OAuth, device code a token přihlášení."
+ },
+ "anthropic": {
+ "description": "Používá token přihlášení pro přístup ke Claude."
+ },
+ "antigravity": {
+ "description": "Používá browser OAuth pro Google Cloud Code Assist."
+ }
+ },
+ "status": {
+ "connected": "Připojeno",
+ "needsRefresh": "Vyžaduje obnovení",
+ "expired": "Vypršelo",
+ "notLoggedIn": "Nepřihlášeno"
+ },
+ "actions": {
+ "browser": "Browser OAuth",
+ "deviceCode": "Device Code",
+ "stopLoading": "Zastavit načítání",
+ "saveToken": "Uložit",
+ "logout": "Odhlásit"
+ },
+ "logoutDialog": {
+ "title": "Odhlásit providera?",
+ "description": "Tím se odstraní uložené přihlašovací údaje pro {{provider}}."
+ },
+ "fields": {
+ "openaiToken": "OpenAI token",
+ "anthropicToken": "Anthropic token"
+ },
+ "labels": {
+ "account": "Účet",
+ "email": "E-mail",
+ "project": "Projekt"
+ },
+ "errors": {
+ "loadFailed": "Načtení přihlašovacích údajů selhalo",
+ "flowFailed": "Ověření auth flow selhalo",
+ "loginFailed": "Přihlášení selhalo",
+ "logoutFailed": "Odhlášení selhalo",
+ "invalidBrowserResponse": "Neplatná odpověď browser přihlášení",
+ "invalidDeviceResponse": "Neplatná odpověď device code",
+ "popupBlocked": "Nelze otevřít novou záložku. Povolte prosím pop-upy a zkuste to znovu."
+ },
+ "flow": {
+ "current": "Aktuální stav autentizace",
+ "pending": "Čekám na autorizaci...",
+ "success": "Autentizace úspěšná",
+ "error": "Autentizace selhala",
+ "expired": "Autentizační relace vypršela"
+ },
+ "device": {
+ "title": "OpenAI Device Login",
+ "description": "Otevřete ověřovací stránku a zadejte níže uvedený kód. Tato stránka se obnoví automaticky.",
+ "code": "Uživatelský kód",
+ "url": "Ověřovací URL",
+ "polling": "Zjišťuji stav přihlášení...",
+ "open": "Otevřít ověřovací stránku"
+ }
+ },
+ "models": {
+ "description": "Nastavení API klíčů pro AI providery. V chatu jsou dostupné pouze nakonfigurované modely.",
+ "defaultChangeSuccess": "Výchozí model aktualizován.",
+ "unsavedPrompt": "Tato změna ještě nebyla uložena. Uložte ji do konfigurace modelu.",
+ "restartHint": "Změny konfigurace modelu se projeví po restartu gateway.",
+ "loadError": "Načtení modelů selhalo",
+ "retry": "Zkusit znovu",
+ "providerCatalogUnavailable": "Katalog poskytovatelů backendu není dostupný. Výběr nových poskytovatelů je zakázán, dokud se API modelů úspěšně nenačte.",
+ "noDefaultHintPrefix": "Zatím není nastaven žádný výchozí model. Klikněte na",
+ "noDefaultHintSuffix": "pro nastavení.",
+ "status": {
+ "available": "Dostupný",
+ "unconfigured": "Nenakonfigurován",
+ "unreachable": "Služba nedostupná"
+ },
+ "badge": {
+ "default": "Výchozí",
+ "virtual": "Virtuální"
+ },
+ "action": {
+ "edit": "Upravit API klíč",
+ "setDefault": "Nastavit jako výchozí",
+ "delete": "Smazat model",
+ "setDefaultDisabled": {
+ "setting": "Nastavuji jako výchozí...",
+ "unavailable": "Nedostupný model nelze nastavit jako výchozí",
+ "isDefault": "Již je výchozím modelem",
+ "isVirtual": "Virtuální model nelze nastavit jako výchozí",
+ "unsupportedProvider": "Tento poskytovatel podporuje pouze ASR a nemůže být výchozím modelem chatu."
+ },
+ "deleteDisabled": {
+ "isDefault": "Výchozí model nelze smazat"
+ }
+ },
+ "defaultOnSave": {
+ "label": "Výchozí model",
+ "description": "Po uložení automaticky nastavit tento model jako výchozí.",
+ "unsupportedProvider": "Tento poskytovatel může být uložen v seznamu modelů, ale nemůže být použit jako výchozí model chatu."
+ },
+ "add": {
+ "button": "Přidat model",
+ "title": "Přidat vlastní model",
+ "description": "Přidejte OpenAI-kompatibilní nebo nativní endpoint modelu.",
+ "modelName": "Alias modelu",
+ "modelNamePlaceholder": "např. my-gpt4",
+ "modelNameHint": "Krátký název pro identifikaci modelu v konverzacích.",
+ "modelId": "Identifikátor modelu",
+ "modelIdPlaceholder": "např. gpt-4o nebo openai/gpt-4o",
+ "modelIdHint": "Pokud není uveden Provider, hodnoty jako openai/gpt-4o se interpretují ve formátu provider/model. Je-li Provider uveden, toto pole se bere jako kanonické ID modelu a neparsuje se z něj prefix providera.",
+ "errorRequired": "Toto pole je povinné.",
+ "errorDuplicateModelName": "Alias modelu již existuje. Použijte jiný název.",
+ "saveError": "Přidání modelu selhalo",
+ "saveSuccess": "Model přidán.",
+ "confirm": "Přidat model"
+ },
+ "delete": {
+ "title": "Smazat model?",
+ "description": "\"{{name}}\" bude trvale odstraněn ze seznamu modelů. Tuto akci nelze vrátit.",
+ "confirm": "Smazat"
+ },
+ "advanced": {
+ "toggle": "Pokročilé možnosti"
+ },
+ "field": {
+ "provider": "Provider",
+ "providerPlaceholder": "např. openai",
+ "providerHint": "Volitelné. Pokud je uvedeno, použije se jako skutečný provider a Identifikátor modelu se bere jako kanonické ID.",
+ "providerInvalid": "Aktuální poskytovatel je neplatný. Vyberte podporovaného poskytovatele.",
+ "selectProviderFirst": "Nejprve vyberte poskytovatele",
+ "apiBase": "API Base URL",
+ "apiKey": "API Key",
+ "apiKeyPlaceholder": "Zadejte API klíč",
+ "apiKeyPlaceholderSet": "Ponechte prázdné pro zachování stávajícího klíče",
+ "proxy": "HTTP Proxy",
+ "proxyHint": "Volitelné. např. http://127.0.0.1:7890",
+ "authMethod": "Metoda autentizace",
+ "authMethodHint": "Metoda autentizace: oauth, token. Ponechte prázdné pro autentizaci API klíčem.",
+ "authMethodManagedHint": "Tento poskytovatel spravuje režim ověřování automaticky.",
+ "connectMode": "Režim připojení",
+ "connectModeHint": "Režim připojení pro CLI-based providery: stdio nebo grpc.",
+ "workspace": "Cesta k workspace",
+ "workspaceHint": "Pracovní adresář pro CLI-based providery (např. GitHub Copilot).",
+ "requestTimeout": "Timeout požadavku (s)",
+ "requestTimeoutHint": "Maximální počet sekund čekání na odpověď. 0 = použít výchozí.",
+ "rpm": "Rate Limit (RPM)",
+ "rpmHint": "Maximální počet požadavků za minutu. 0 = bez omezení.",
+ "thinkingLevel": "Úroveň uvažování",
+ "thinkingLevelHint": "Rozšířený thinking budget: off, low, medium, high, xhigh, adaptive.",
+ "providerDefault": "výchozí poskytovatele",
+ "maxTokensField": "Pole Max Tokens",
+ "maxTokensFieldHint": "Přepsat název pole požadavku pro max tokens, např. max_completion_tokens.",
+ "toolSchemaTransform": "Transformace schématu nástroje",
+ "toolSchemaTransformHint": "Volitelná transformace kompatibility pro JSON schémata nástrojů. Ponechte prázdné pro nativní chování. Podporované hodnoty: simple.",
+ "streamingEnabled": "Streamované výstupy",
+ "streamingEnabledHint": "Povolit tomuto modelu streamované požadavky. Musí být rovněž povoleno streamování v nastavení kanálu.",
+ "extraBody": "Extra Body",
+ "extraBodyHint": "Dodatečná JSON pole pro vložení do těla požadavku, např. {\"reasoning_split\": true}.",
+ "customHeaders": "Vlastní hlavičky",
+ "customHeadersHint": "Dodatečné HTTP hlavičky vkládané do každého požadavku, např. {\"X-Source\": \"coding-plan\"}.",
+ "invalidJson": "Neplatný formát JSON"
+ },
+ "edit": {
+ "title": "Nastavení {{name}}",
+ "apiKeyHint": "Klíč je již nastaven. Ponechte prázdné pro zachování beze změny.",
+ "oauthNote": "Tento provider používá OAuth — API klíč není vyžadován.",
+ "saveError": "Uložení selhalo",
+ "saveSuccess": "Konfigurace modelu uložena."
+ },
+ "fetch": {
+ "title": "Načíst dostupné modely",
+ "description": "Načíst seznam modelů od poskytovatele.",
+ "providerLabel": "Poskytovatel:",
+ "needApiKey": "Nejprve zadejte API klíč pro načtení modelů.",
+ "fetching": "Načítání modelů...",
+ "retry": "Zkusit znovu",
+ "filterPlaceholder": "Filtrovat modely...",
+ "found": "Nalezen {{count}} model",
+ "found_plural": "Nalezeno {{count}} modelů",
+ "shown": "(zobrazeno {{count}})",
+ "selectAll": "Vybrat vše",
+ "deselectAll": "Zrušit výběr všech",
+ "fill": "Doplnit {{count}} vybraný model",
+ "fill_plural": "Doplnit {{count}} vybrané modely",
+ "failed": "Načtení modelů selhalo"
+ },
+ "catalog": {
+ "button": "Uložené katalogy",
+ "title": "Uložené katalogy modelů",
+ "description": "Dříve načtené seznamy modelů, uložené podle API klíče. Vyberte modely a přidejte je do konfigurace.",
+ "loading": "Načítání katalogů...",
+ "empty": "Zatím žádné uložené katalogy. Načtěte modely od poskytovatele a uložte katalog.",
+ "filterPlaceholder": "Filtrovat modely...",
+ "models": "modely",
+ "fetchedAt": "Načteno",
+ "delete": "Smazat katalog",
+ "refresh": "Aktualizovat ze zdroje",
+ "found": "Nalezen {{count}} model",
+ "found_plural": "Nalezeno {{count}} modelů",
+ "selectAll": "Vybrat vše",
+ "deselectAll": "Zrušit výběr všech",
+ "addSelected": "Přidat {{count}} vybrané",
+ "addSuccess": "Přidáno {{count}} modelů do konfigurace.",
+ "needApiKey": "Tyto modely vyžadují API klíč. Po importu bude nutné nastavit přihlašovací údaje."
+ },
+ "test": {
+ "title": "Test připojení modelu",
+ "description": "Ověřit, že je endpoint modelu dostupný a správně nakonfigurovaný.",
+ "modelLabel": "Model:",
+ "identifierLabel": "Identifikátor:",
+ "endpointLabel": "Endpoint:",
+ "testConnection": "Testovat připojení",
+ "testing": "Testuji připojení...",
+ "success": "Připojení úspěšné",
+ "responseTime": "Doba odezvy: {{ms}} ms",
+ "failed": "Připojení selhalo",
+ "status": "Stav: {{status}}",
+ "testFailed": "Test selhal",
+ "testAgain": "Testovat znovu"
+ },
+ "validation": {
+ "whitespace": "Identifikátor modelu nesmí obsahovat mezery",
+ "leadingSlash": "Nesmí začínat lomítkem /",
+ "consecutiveSlash": "Nesmí obsahovat po sobě jdoucí lomítka /",
+ "useProvider": "Bude použit '{{provider}}' jako poskytovatel",
+ "defaultToOpenAI": "Žádný poskytovatel nezadán, výchozí je OpenAI",
+ "emptyModel": "Název modelu nesmí být prázdný",
+ "shouldUse": "'{{provider}}' by měl používat '{{alias}}'",
+ "didYouMean": "Mysleli jste '{{closest}}'?",
+ "unknownProvider": "Neznámý poskytovatel '{{provider}}'",
+ "parsed": "poskytovatel={{provider}}, model={{model}}"
+ },
+ "combobox": {
+ "selectProvider": "Vyberte poskytovatele...",
+ "searchProvider": "Hledat poskytovatele...",
+ "noProvider": "Žádný poskytovatel nenalezen.",
+ "noCatalog": "Katalog poskytovatele není dostupný.",
+ "local": "lokální"
+ }
+ },
+ "channels": {
+ "loadError": "Načtení kanálů selhalo",
+ "name": {
+ "telegram": "Telegram",
+ "discord": "Discord",
+ "slack": "Slack",
+ "feishu": "Feishu",
+ "dingtalk": "DingTalk",
+ "line": "LINE",
+ "qq": "QQ",
+ "onebot": "OneBot",
+ "wecom": "WeCom",
+ "whatsapp": "WhatsApp",
+ "whatsapp_native": "WhatsApp Native",
+ "pico": "Web",
+ "maixcam": "MaixCam",
+ "matrix": "Matrix",
+ "irc": "IRC",
+ "weixin": "WeChat",
+ "mqtt": "MQTT"
+ },
+ "weixin": {
+ "bindTitle": "Propojení účtu WeChat",
+ "bindDesc": "Naskenujte QR kód pomocí WeChat pro propojení osobního účtu.",
+ "bind": "Propojit WeChat",
+ "rebind": "Znovu propojit",
+ "bound": "WeChat propojen",
+ "notBound": "Účet WeChat zatím není propojen.",
+ "generating": "Generuji QR kód...",
+ "scanHint": "Otevřete WeChat a naskenujte QR kód",
+ "scanned": "Naskenováno — potvrďte ve WeChat",
+ "expired": "QR kód vypršel",
+ "retry": "Zkusit znovu",
+ "refresh": "Obnovit QR",
+ "errorGeneric": "Nastala chyba. Zkuste to znovu."
+ },
+ "wecom": {
+ "bindTitle": "Propojení WeCom",
+ "bindDesc": "Naskenujte QR kód pomocí WeCom pro propojení AI Bota.",
+ "bind": "Propojit WeCom",
+ "rebind": "Znovu propojit",
+ "bound": "WeCom propojen",
+ "notBound": "WeCom AI Bot zatím není propojen.",
+ "generating": "Generuji QR kód...",
+ "scanHint": "Otevřete WeCom a naskenujte QR kód",
+ "scanned": "Naskenováno, potvrďte ve WeCom",
+ "expired": "QR kód vypršel",
+ "retry": "Zkusit znovu",
+ "refresh": "Obnovit QR",
+ "errorGeneric": "Nastala chyba. Zkuste to znovu."
+ },
+ "field": {
+ "token": "Bot Token",
+ "tokenPlaceholder": "Zadejte bot token",
+ "botToken": "Bot Token",
+ "appToken": "App Token",
+ "appId": "App ID",
+ "appSecret": "App Secret",
+ "verificationToken": "Verification Token",
+ "encryptKey": "Encrypt Key",
+ "baseUrl": "API Base URL",
+ "proxy": "HTTP Proxy",
+ "mentionOnly": "Pouze při zmínce",
+ "typingEnabled": "Indikátor psaní",
+ "placeholderEnabled": "Placeholder zpráva",
+ "placeholderText": "Text placeholderu",
+ "streamingEnabled": "Streamované výstupy",
+ "streamingThrottleSeconds": "Interval aktualizací (s)",
+ "streamingMinGrowthChars": "Minimální přírůstek znaků",
+ "groupTriggerMentionOnly": "Pouze zmínka ve skupině",
+ "groupTriggerPrefixes": "Prefixy pro spuštění ve skupině",
+ "groupTriggerPrefixesPlaceholder": "např. /, !, ?",
+ "randomReactionEmoji": "Náhodná emoji reakce",
+ "randomReactionEmojiPlaceholder": "např. THUMBSUP, HEART, SMILE",
+ "isLark": "Lark (mezinárodní)",
+ "allowFrom": "Povolit od",
+ "allowFromPlaceholder": "např. 123456, 789012",
+ "allowOrigins": "Povolené originy",
+ "allowOriginsPlaceholder": "např. https://example.com, http://localhost:5173",
+ "removeListItem": "Odebrat {{value}}",
+ "secretPlaceholder": "Zadejte secret",
+ "secretHintSet": "Hodnota je již nastavena. Ponechte prázdné pro zachování beze změny."
+ },
+ "page": {
+ "notFound": "Kanál \"{{name}}\" není podporován.",
+ "saveSuccess": "Nastavení kanálu uloženo.",
+ "saveError": "Uložení nastavení kanálu selhalo",
+ "savePrompt": "Tato změna ještě nebyla uložena. Uložte ji do konfigurace kanálu.",
+ "docLink": "Dokumentace",
+ "enableLabel": "Aktivovat kanál",
+ "restartRequiredTitle": "Vyžadován restart gateway",
+ "restartRequiredDesc": "Poslední nastavení {{name}} bylo uloženo. Pro aktivaci restartujte gateway."
+ },
+ "form": {
+ "desc": {
+ "token": "Přístupový token bota pro připojení k API platformy.",
+ "botToken": "Token bota pro odesílání a příjem zpráv.",
+ "appToken": "Token aplikace pro Socket Mode připojení.",
+ "appId": "Unikátní ID aplikace pro autentizaci.",
+ "appSecret": "Secret aplikace pro podepisování a autentizaci.",
+ "verificationToken": "Verification token pro event callbacky.",
+ "encryptKey": "Šifrovací klíč pro dešifrování callback payloadů.",
+ "baseUrl": "Základní URL API platformy. Výchozí je oficální endpoint.",
+ "proxy": "Adresa HTTP proxy pro odchozí síťový provoz.",
+ "mentionOnly": "Reagovat pouze při explicitní zmínce bota ve skupinových chatech.",
+ "typingEnabled": "Zobrazovat stav psaní během generování odpovědi.",
+ "placeholderEnabled": "Aktivovat dočasné placeholder zprávy před odesláním finální odpovědi.",
+ "streamingEnabled": "Povolit tomuto kanálu zobrazovat streamované výstupy poskytovatele. Musí být rovněž povoleno streamování v nastavení modelu.",
+ "streamingThrottleSeconds": "Minimální interval mezi průběžnými aktualizacemi streamu. 0 znamená použít výchozí hodnotu. Finální odpovědi nejsou omezovány.",
+ "streamingMinGrowthChars": "Minimální přírůstek textu před odesláním další průběžné aktualizace streamu. 0 znamená použít výchozí hodnotu. Finální odpovědi nejsou omezovány.",
+ "groupTriggerMentionOnly": "Ve skupinových chatech reagovat pouze při zmínce bota.",
+ "groupTriggerPrefixes": "Vlastní prefixy pro spuštění ve skupinovém chatu. Přidávejte položky po jedné nebo vložte více hodnot najednou.",
+ "randomReactionEmoji": "PicoClaw přidává emoji reakce na zprávy uživatelů jako potvrzení přijetí. Příklady: \"THUMBSUP\", \"HEART\", \"SMILE\". Ponechte prázdné pro výchozí emoji \"Pin\".",
+ "isLark": "Použít mezinárodní doménu Lark (open.larksuite.com) místo domény Feishu (open.feishu.cn).",
+ "allowFrom": "Povolená ID uživatelů nebo skupin. Přidávejte po jednom nebo vložte více hodnot najednou.",
+ "allowOrigins": "Povolené origin domény. Přidávejte po jednom nebo vložte více hodnot najednou.",
+ "wsUrl": "URL WebSocket služby.",
+ "reconnectInterval": "Interval pro opětovné připojení po výpadku (sekundy).",
+ "bridgeUrl": "URL bridge služby.",
+ "sessionStorePath": "Lokální cesta pro uložení relací.",
+ "useNative": "Zda použít nativní klientský režim.",
+ "host": "Adresa hostitele služby.",
+ "port": "Port služby.",
+ "homeserver": "URL Matrix homeserveru.",
+ "userId": "Uživatelské ID účtu.",
+ "deviceId": "ID zařízení.",
+ "joinOnInvite": "Automaticky vstoupit do místností při pozvání.",
+ "clientId": "Client ID pro autentizaci platformy.",
+ "corpId": "Corp ID organizace.",
+ "agentId": "Agent ID podnikové aplikace.",
+ "webhookUrl": "Celá URL webhooku.",
+ "webhookHost": "Hostitel pro naslouchání webhooku.",
+ "webhookPort": "Port pro naslouchání webhooku.",
+ "webhookPath": "Cesta route webhooku.",
+ "replyTimeout": "Timeout odpovědi v sekundách.",
+ "maxSteps": "Maximální počet kroků zpracování.",
+ "welcomeMessage": "Obsah uvítací zprávy pro nové relace.",
+ "allowTokenQuery": "Povolit token v URL query parametrech.",
+ "pingInterval": "Interval heartbeatu připojení v sekundách.",
+ "readTimeout": "Timeout čtení v sekundách.",
+ "writeTimeout": "Timeout zápisu v sekundách.",
+ "maxConnections": "Maximální počet souběžných připojení.",
+ "server": "Adresa IRC serveru.",
+ "tls": "Zda aktivovat TLS.",
+ "nick": "Přezdívka bota.",
+ "user": "IRC uživatelské jméno.",
+ "realName": "Zobrazované celé jméno.",
+ "channels": "IRC kanály pro připojení.",
+ "requestCaps": "Seznam IRC capabilities požadovaných při připojení.",
+ "maxBase64FileSizeMiB": "Maximální velikost v MiB pro převod lokálních souborů do base64 před nahráním. 0 znamená bez omezení. Platí pouze pro lokální soubory, ne pro URL uploady.",
+ "genericField": "Slouží ke konfiguraci {{field}}.",
+ "broker": "Adresa MQTT brokeru.",
+ "mqttAgentId": "Jedinečný identifikátor této instance, používá se k sestavení cesty tématu.",
+ "topicPrefix": "Prefix tématu. Výchozí hodnota je /picoclaw.",
+ "mqttUsername": "Uživatelské jméno pro ověření u brokeru (volitelné).",
+ "mqttPassword": "Heslo pro ověření u brokeru (volitelné).",
+ "mqttClientId": "ID MQTT klienta. Ponechte prázdné pro automatické generování.",
+ "keepAlive": "Interval keepalive v sekundách. Výchozí hodnota je 60.",
+ "qos": "Úroveň QoS zpráv: 0 = nejvýše jednou, 1 = alespoň jednou, 2 = přesně jednou."
+ }
+ },
+ "validation": {
+ "requiredField": "Toto pole je povinné."
+ },
+ "mqtt": {
+ "protocolTitle": "Referenční příručka protokolu",
+ "protocolDesc": "Klienti odesílají a přijímají zprávy pomocí následujícího formátu tématu a obsahu.",
+ "uplink": "Uplink (Klient → Agent)",
+ "downlink": "Downlink (Agent → Klient)",
+ "topicParams": "Parametry tématu",
+ "fieldText": "text",
+ "uplinkTextDesc": "Přirozený pokyn od uživatele (povinné).",
+ "downlinkTextDesc": "Text odpovědi agenta. V režimu streamování zřetězte více zpráv ve správném pořadí pro úplnou odpověď.",
+ "topicPrefixDesc": "Prefix tématu, odpovídá výše uvedené konfiguraci.",
+ "agentIdDesc": "ID agenta, odpovídá výše uvedené konfiguraci.",
+ "clientIdDesc": "Identifikátor definovaný klientem. Doporučení: vygenerujte UUID při prvním spuštění a uložte jej, aby stejné zařízení vždy používalo stejné ID.",
+ "clientIdPlaceholder": "Automaticky generováno, pokud je prázdné",
+ "secretSet": "Již nakonfigurováno. Ponechte prázdné pro zachování stávající hodnoty.",
+ "secretEmpty": "Není nakonfigurováno"
+ }
+ },
+ "pages": {
+ "agent": {
+ "load_error": "Načtení informací o podpoře agenta selhalo.",
+ "skills": {
+ "empty": "Žádné dovednosti nejsou aktuálně dostupné.",
+ "install_success": "{{name}} nainstalováno.",
+ "install_error": "Instalace dovednosti selhala.",
+ "search_placeholder": "Hledat podle názvu, popisu nebo registru",
+ "source_label": "Typ",
+ "sort_label": "Řadit",
+ "import": "Importovat dovednost",
+ "import_success": "Dovednost importována.",
+ "import_error": "Import dovednosti selhal.",
+ "import_invalid_type": "Podporovány jsou pouze soubory dovedností ve formátu Markdown nebo ZIP.",
+ "import_invalid_size": "Soubor dovednosti musí být menší než 1 MB.",
+ "import_constraints": "Import souboru dovednosti ve formátu Markdown nebo ZIP, max. 1 MB",
+ "view": "Zobrazit",
+ "delete": "Smazat",
+ "delete_title": "Smazat dovednost?",
+ "delete_description": "\"{{name}}\" bude odstraněna z dovedností workspace.",
+ "delete_confirm": "Smazat",
+ "delete_success": "Dovednost smazána.",
+ "delete_error": "Smazání dovednosti selhalo.",
+ "viewer_title": "Obsah dovednosti",
+ "viewer_description": "Zde si přečtěte aktuální obsah SKILL.md.",
+ "load_detail_error": "Načtení obsahu dovednosti selhalo.",
+ "no_description": "Popis není k dispozici.",
+ "no_results": "Žádné dovednosti neodpovídají aktuálním filtrům.",
+ "dropzone_title": "Importovat do workspace",
+ "dropzone_description": "Přetáhněte soubor dovednosti nebo vyberte ze disku.",
+ "dropzone_label": "Přetáhněte soubor dovednosti sem",
+ "dropzone_active": "Pusťte pro import dovednosti",
+ "dropzone_release": "Dovednost bude normalizována a uložena do adresáře dovedností workspace.",
+ "marketplace_title": "Objevit dovednosti",
+ "marketplace_description": "Prohledejte registry dovedností a nainstalujte užitečné dovednosti do tohoto workspace",
+ "marketplace_search_placeholder": "Hledat schopnosti jako github, docker, database...",
+ "marketplace_search_action": "Hledat",
+ "marketplace_search_status": "Stav hledání",
+ "marketplace_install_status": "Stav instalace",
+ "marketplace_notice_title": "Bezpečnostní upozornění",
+ "marketplace_notice_body": "Dovednosti z registru jsou obsah třetích stran. Před instalací zkontrolujte autora, URL stránky, instrukce a veškerý požadovaný kód nebo přihlašovací údaje.",
+ "marketplace_status_disabled": "Zakázáno. Nejprve aktivujte příslušný nástroj na stránce Nástroje.",
+ "marketplace_status_enable_hint": "Nejprve aktivujte příslušný nástroj na stránce Nástroje.",
+ "marketplace_search_error": "Prohledání registrů selhalo.",
+ "marketplace_loading_results": "Hledám dovednosti...",
+ "marketplace_loading_more": "Načítám další dovednosti...",
+ "marketplace_results_title": "{{count}} výsledků pro \"{{query}}\"",
+ "marketplace_results_hint": "Výsledky z registru se instalují do aktuálního workspace.",
+ "marketplace_install_action": "Instalovat",
+ "marketplace_installed": "Nainstalováno",
+ "marketplace_view_installed": "Zobrazit lokální",
+ "marketplace_installed_hint": "Již dostupné v tomto workspace jako \"{{name}}\".",
+ "marketplace_empty_results": "Žádné instalovatelné dovednosti neodpovídají \"{{query}}\".",
+ "marketplace_idle": "Hledejte schopnost pro zobrazení instalovatelných dovedností z nakonfigurovaných registrů.",
+ "marketplace_unavailable": "Prohledávání registrů je momentálně nedostupné. Zkontrolujte nastavení nástrojů Dovednosti.",
+ "sort": {
+ "name_asc": "Název (A-Z)",
+ "name_desc": "Název (Z-A)",
+ "source": "Typ"
+ },
+ "origin": {
+ "all": "Všechny typy",
+ "builtin": "Vestavěné",
+ "third_party": "Třetí strany",
+ "manual": "Ruční"
+ },
+ "summary": {
+ "total": "Celkem dovedností"
+ },
+ "detail_tabs": {
+ "preview": "Náhled",
+ "raw": "Zdrojový text",
+ "meta": "Metadata"
+ },
+ "metadata": {
+ "name": "Název",
+ "description": "Popis",
+ "registry": "Registr",
+ "url": "URL",
+ "version": "Nainstalovaná verze",
+ "lines": "Počet řádků",
+ "characters": "Počet znaků"
+ },
+ "marketplace_installDisabled": {
+ "installing": "Instaluji...",
+ "installed": "Již nainstalováno",
+ "cannotInstall": "Nelze nainstalovat: příslušný nástroj není aktivní"
+ }
+ },
+ "tools": {
+ "search_placeholder": "Hledat nástroje...",
+ "no_results": "Žádné nástroje neodpovídají kritériím.",
+ "filter": {
+ "all": "Všechny stavy",
+ "enabled": "Aktivní",
+ "disabled": "Neaktivní",
+ "blocked": "Blokované"
+ },
+ "empty": "Žádné nástroje nejsou dostupné.",
+ "enable_success": "Nástroj aktivován.",
+ "disable_success": "Nástroj deaktivován.",
+ "toggle_error": "Aktualizace stavu nástroje selhala.",
+ "library_title": "Knihovna nástrojů",
+ "library_description": "Procházejte a spravujte sadu nástrojů dostupných pro vaše AI agenty.",
+ "web_search": {
+ "title": "Webové vyhledávání",
+ "description": "Poskytuje agentům schopnost webového vyhledávání pro nalezení aktuálních informací. Automaticky směruje na optimálního aktivního providera.",
+ "unsaved_prompt": "Tato změna ještě nebyla uložena. Uložte ji do konfigurace webového vyhledávání.",
+ "global_settings": "Obecné",
+ "providers_config": "Integrace",
+ "load_error": "Načtení nastavení webového vyhledávání selhalo.",
+ "save": "Uložit změny",
+ "open_settings": "Otevřít nastavení",
+ "save_success": "Nastavení úspěšně uloženo.",
+ "save_error": "Uložení nastavení selhalo.",
+ "provider": "Primární provider",
+ "provider_description": "Vyberte výchozího providera pro zpracování požadavků webového vyhledávání.",
+ "proxy": "HTTPS Proxy",
+ "proxy_description": "Volitelná globální HTTP/S proxy pro podkladové webové požadavky.",
+ "prefer_native": "Preferovat nativní vyhledávání",
+ "prefer_native_hint": "Pokud je aktivní, model může použít vlastní vestavěnou schopnost vyhledávání místo nakonfigurovaného seznamu providerů.",
+ "provider_hint": "Aktivujte tohoto providera a vyplňte požadovaná nastavení připojení.",
+ "max_results": "Max výsledků",
+ "base_url": "Base URL",
+ "base_url_placeholder": "Volitelné přepsání endpointu",
+ "api_key": "API Key / Token",
+ "api_key_placeholder": "Zadejte API klíč, ponechte prázdné pro zachování stávajícího",
+ "none": "Nedostupné"
+ },
+ "status": {
+ "enabled": "Aktivní",
+ "disabled": "Neaktivní",
+ "blocked": "Blokováno"
+ },
+ "categories": {
+ "automation": "Automatizace",
+ "filesystem": "Souborový systém",
+ "web": "Web",
+ "communication": "Komunikace",
+ "skills": "Dovednosti",
+ "agents": "Agenti",
+ "hardware": "Hardware",
+ "discovery": "Discovery"
+ },
+ "reasons": {
+ "requires_linux": "Tento nástroj funguje pouze na Linux hostech s potřebnými soubory zařízení.",
+ "requires_serial_platform": "Tento nástroj aktuálně podporuje hostitele Linux, macOS a Windows s dostupnými sériovými porty.",
+ "requires_skills": "Nejprve aktivujte `tools.skills`, aby byl tento nástroj registru dovedností dostupný.",
+ "requires_subagent": "Nejprve aktivujte `tools.subagent`, aby nástroj spawn mohl delegovat práci.",
+ "requires_mcp_discovery": "Nejprve aktivujte `tools.mcp.discovery`, aby byly nástroje MCP discovery dostupné.",
+ "requires_web_search_provider": "Nakonfigurujte alespoň jednoho připraveného externího providera webového vyhledávání."
+ }
+ }
+ },
+ "config": {
+ "load_error": "Načtení konfigurace selhalo. Obnovte stránku a zkuste to znovu.",
+ "workspace": "Adresář workspace",
+ "workspace_hint": "Základní adresář pro operace s agentovými soubory.",
+ "restrict_workspace": "Omezit na workspace",
+ "restrict_workspace_hint": "Povolit operace se soubory pouze uvnitř workspace.",
+ "split_on_marker": "Chatty režim",
+ "split_on_marker_hint": "Rozděluje dlouhé zprávy na krátké jako při skutečném lidském chatu.",
+ "tool_feedback_enabled": "Tool Feedback",
+ "tool_feedback_enabled_hint": "Odeslat krátkou poznámku o provedení do aktuálního chatu před spuštěním každého nástroje.",
+ "tool_feedback_separate_messages": "Oddělené zprávy zpětné vazby",
+ "tool_feedback_separate_messages_hint": "Každou aktualizaci zpětné vazby nástroje uchovejte jako samostatnou zprávu chatu místo opakovaného použití jediné průběžné zprávy.",
+ "tool_feedback_max_args_length": "Délka Tool Feedbacku",
+ "tool_feedback_max_args_length_hint": "Maximální počet znaků zobrazených v každé tool feedback zprávě. Nastavte 0 pro výchozí hodnotu.",
+ "exec_enabled": "Povolit příkazy",
+ "exec_enabled_hint": "Aktivuje nebo deaktivuje spouštění příkazů. Pokud je deaktivováno, žádné příkazy se nespustí.",
+ "allow_remote": "Povolit vzdálené příkazy",
+ "allow_remote_hint": "Pokud je aktivní, vzdálené relace nebo ne-lokální kontexty mohou také spouštět příkazy. Pokud je deaktivováno, spouštění příkazů je omezeno na lokální bezpečné kontexty.",
+ "enable_deny_patterns": "Aktivovat blacklist",
+ "enable_deny_patterns_hint": "Pokud je aktivní, aplikace blokuje příkazy odpovídající vestavěným nebezpečným vzorům a vlastnímu blacklistu příkazů níže.",
+ "exec_timeout_seconds": "Timeout příkazu (sekundy)",
+ "exec_timeout_seconds_hint": "Maximální doba běhu příkazů. Nastavte 0 pro výchozí timeout.",
+ "custom_deny_patterns": "Blacklist příkazů",
+ "custom_deny_patterns_hint": "Přidejte vlastní pravidla pro blokování příkazů, jeden regulární výraz na řádek. Příkaz odpovídající jakémukoli pravidlu bude zablokován.",
+ "custom_allow_patterns": "Whitelist příkazů",
+ "custom_allow_patterns_hint": "Přidejte vlastní pravidla pro povolení příkazů, jeden regulární výraz na řádek. Příkaz odpovídající jakémukoli pravidlu přeskočí blacklist, ale ostatní bezpečnostní limity stále platí.",
+ "custom_patterns_placeholder": "^rm\\s+-rf\\b\n^git\\s+push\\b",
+ "pattern_detector_title": "Nástroj pro testování vzorů",
+ "pattern_detector_hint": "Zadejte příkaz pro otestování, zda odpovídá některému vzoru blacklistu nebo whitelistu.",
+ "pattern_detector_input_placeholder": "Zadejte příkaz pro test, např. rm -rf /tmp",
+ "pattern_detector_test_button": "Testovat",
+ "pattern_detector_result_allowed": "Povoleno (odpovídá whitelistu)",
+ "pattern_detector_result_blocked": "Blokováno (odpovídá blacklistu)",
+ "pattern_detector_result_no_match": "Žádná shoda (použijí se výchozí pravidla)",
+ "allow_shell_execution": "Povolit naplánované příkazy",
+ "allow_shell_execution_hint": "Povolit naplánovaným úlohám výchozí spouštění příkazů. Pokud je deaktivováno, uživatelé musí předat command_confirm=true pro naplánování příkazu.",
+ "cron_exec_timeout": "Timeout naplánovaného příkazu (minuty)",
+ "cron_exec_timeout_hint": "Maximální doba běhu naplánovaných příkazů. Nastavte 0 pro deaktivaci timeoutu.",
+ "max_tokens": "Max Tokens",
+ "max_tokens_hint": "Horní limit tokenů na odpověď modelu.",
+ "context_window": "Context Window",
+ "context_window_hint": "Kapacita kontextového okna modelu v tokenech. Ponechte prázdné pro výchozí (4× max tokens).",
+ "max_tool_iterations": "Max Tool Iterations",
+ "max_tool_iterations_hint": "Maximální počet smyček volání nástrojů v jednom úkolu.",
+ "summarize_threshold": "Práh pro sumarizaci zpráv",
+ "summarize_threshold_hint": "Spustit sumarizaci po tomto počtu zpráv.",
+ "summarize_token_percent": "Procento tokenů pro sumarizaci",
+ "summarize_token_percent_hint": "Používá se při spuštění sumarizace konverzace.",
+ "turn_profile": "Zásady kontextu požadavku",
+ "turn_profile_hint": "Řídí, jaký kontext nese každý požadavek. Ponechte zakázáno pro zachování běžného chování chatu.",
+ "turn_profile_enabled": "Povolit zásadu",
+ "turn_profile_enabled_hint": "Pokud je povoleno, tato zásada se použije na každý nový tah. Pokud je zakázáno, PicoClaw používá původní chování kontextu.",
+ "turn_profile_mode_default": "Výchozí",
+ "turn_profile_mode_off": "Vypnuto",
+ "turn_profile_mode_custom": "Povolený seznam",
+ "turn_profile_history": "Historický kontext",
+ "turn_profile_history_hint": "Výchozí nastavení zahrnuje předchozí zprávy z této session. Vypnutí způsobí, že tah bude fungovat jako nový chat a jeho výsledek se neuloží do historie.",
+ "turn_profile_system_prompt": "Systémový kontext",
+ "turn_profile_system_prompt_hint": "Výchozí nastavení zahrnuje identitu PicoClaw, workspace, paměť a instrukce runtime. Vypnuto zachová pouze systémové prompty explicitně dodané požadavkem.",
+ "turn_profile_skills": "Dovednostní prompty",
+ "turn_profile_skills_hint": "Výchozí nastavení zahrnuje dostupné dovednosti a aktivní instrukce. Vypnuto je skryje. Povolený seznam zachová jen dovednosti zadané jeden název na řádek.",
+ "turn_profile_skills_allow_placeholder": "název-dovednosti\ndalší-dovednost",
+ "turn_profile_tools": "Volatelné nástroje",
+ "turn_profile_tools_hint": "Výchozí nastavení zpřístupní běžné nástroje. Vypnuto zabrání volání nástrojů. Povolený seznam zachová pouze nástroje zadané jeden název na řádek, například web_search.",
+ "turn_profile_tools_allow_placeholder": "web_search\nweb_fetch",
+ "session_scope": "Rozsah relace",
+ "session_scope_hint": "Způsob izolace kontextu chatu mezi partnery/kanály.",
+ "session_scope_per_channel_peer": "Podle kanálu + partnera",
+ "session_scope_per_channel_peer_desc": "Oddělený kontext pro každého uživatele v každém kanálu.",
+ "session_scope_per_channel": "Podle kanálu",
+ "session_scope_per_channel_desc": "Jeden sdílený kontext na kanál.",
+ "session_scope_per_peer": "Podle partnera",
+ "session_scope_per_peer_desc": "Jeden kontext na uživatele napříč kanály.",
+ "session_scope_global": "Globální",
+ "session_scope_global_desc": "Všechny zprávy sdílejí jeden globální kontext.",
+ "heartbeat_enabled": "Heartbeat",
+ "heartbeat_enabled_hint": "Odesílat pravidelné heartbeat zprávy.",
+ "heartbeat_interval": "Interval heartbeatu (minuty)",
+ "heartbeat_interval_hint": "Interval v minutách mezi heartbeat signály.",
+ "devices_enabled": "Aktivovat zařízení",
+ "devices_enabled_hint": "Aktivovat integrace hardwarových zařízení.",
+ "monitor_usb": "Sledovat USB",
+ "monitor_usb_hint": "Sledovat události připojení/odpojení USB při aktivních zařízeních.",
+ "autostart_label": "Spustit při přihlášení",
+ "autostart_hint": "Automaticky spustit PicoClaw Web při přihlášení.",
+ "autostart_unsupported": "Spuštění při přihlášení není na této platformě podporováno.",
+ "autostart_load_error": "Načtení stavu spuštění při přihlášení selhalo.",
+ "server_port": "Port služby",
+ "server_port_hint": "HTTP port používaný PicoClaw Web.",
+ "launcher_section_hint": "Změny v této sekci se projeví až po restartu launcheru.",
+ "gateway_restart_hint": "Změny v této části se projeví po restartu gateway.",
+ "dashboard_password": "Přihlašovací heslo",
+ "dashboard_password_hint": "Nastavit nové přihlašovací heslo.",
+ "dashboard_password_placeholder": "Alespoň 8 znaků",
+ "dashboard_password_confirm": "Potvrzení nového hesla",
+ "dashboard_password_confirm_hint": "Zadejte nové přihlašovací heslo znovu.",
+ "dashboard_password_confirm_placeholder": "Zopakujte heslo",
+ "dashboard_password_required": "Zadejte a potvrďte nové přihlašovací heslo.",
+ "dashboard_password_mismatch": "Přihlašovací hesla se neshodují.",
+ "dashboard_password_min_length": "Přihlašovací heslo musí mít alespoň 8 znaků.",
+ "lan_access": "Aktivovat přístup z LAN",
+ "lan_access_hint": "Povolit přístup z ostatních zařízení v lokální síti.",
+ "allowed_cidrs": "Povolené síťové CIDRy",
+ "allowed_cidrs_hint": "Ke službě mají přístup pouze klienti z těchto CIDR rozsahů. Jeden na řádek nebo oddělené čárkou. Ponechte prázdné pro povolení všech.",
+ "allowed_cidrs_placeholder": "192.168.1.0/24\n10.0.0.0/8",
+ "evolution_section_hint": "Nechte agenta učit se z dokončených tahů a připravovat vylepšení dovedností.",
+ "evolution_enabled": "Povolit evoluci",
+ "evolution_enabled_hint": "Zaznamenávat data učení pro dokončené tahy. Režimy Návrh a Aplikovat mohou také generovat aktualizace dovedností.",
+ "evolution_mode": "Režim evoluce",
+ "evolution_mode_hint": "Pozorovat — pouze zaznamenává data. Návrh — připravuje kandidátní dovednosti. Aplikovat — může zapsat přijaté návrhy do dovedností workspace.",
+ "evolution_mode_observe": "Sledování",
+ "evolution_mode_draft": "Návrh",
+ "evolution_mode_apply": "Aplikace",
+ "evolution_state_dir": "Adresář stavu",
+ "evolution_state_dir_hint": "Volitelný adresář pro stav evoluce. Ponechte prázdné pro použití výchozího workspace.",
+ "evolution_min_task_count": "Minimální počet úloh",
+ "evolution_min_task_count_hint": "Minimální počet příbuzných úloh, než může vzor vytvořit návrh.",
+ "evolution_min_success_ratio": "Minimální poměr úspěšnosti",
+ "evolution_min_success_ratio_hint": "Požadovaný poměr úspěšnosti pro seskupené úlohy. Zadejte hodnotu větší než 0 a nejvýše 1.",
+ "evolution_cold_path_trigger": "Spouštěč zpracování",
+ "evolution_cold_path_trigger_hint": "Zvolte, kdy se spustí generování návrhů pro způsobilé záznamy učení.",
+ "evolution_cold_path_after_turn": "Po každém tahu",
+ "evolution_cold_path_scheduled": "Plánovaně",
+ "evolution_cold_path_manual": "Vypnuto",
+ "evolution_cold_path_times": "Plánované časy",
+ "evolution_cold_path_times_hint": "Časy spuštění plánovaného zpracování. Zadejte jednu hodnotu HH:MM na řádek.",
+ "mcp_section_hint": "Konfigurujte MCP servery bez ruční úpravy souboru config.json.",
+ "mcp_enabled": "Povolit MCP",
+ "mcp_enabled_hint": "Zapnout nebo vypnout integraci MCP serverů.",
+ "mcp_discovery_enabled": "Povolit MCP Discovery",
+ "mcp_discovery_enabled_hint": "Povolit nástrojům MCP Discovery prohledávat registrované MCP servery.",
+ "mcp_discovery_ttl": "TTL odemčení nástrojů discovery",
+ "mcp_discovery_ttl_hint": "Počet TTL tiků, po které zůstávají nalezené nástroje dostupné po vyhledávání.",
+ "mcp_discovery_max_results": "Maximální počet výsledků discovery",
+ "mcp_discovery_max_results_hint": "Maximální počet shod MCP discovery vrácených na dotaz.",
+ "mcp_discovery_use_bm25": "Použít BM25 řazení",
+ "mcp_discovery_use_bm25_hint": "Použít lexikální skórování BM25 pro výsledky MCP discovery.",
+ "mcp_discovery_use_regex": "Povolit regex vyhledávání",
+ "mcp_discovery_use_regex_hint": "Povolit shodu na základě regulárních výrazů v MCP discovery.",
+ "mcp_servers": "MCP servery",
+ "mcp_servers_hint": "Přidávejte, upravujte nebo odebírejte MCP servery.",
+ "mcp_server_new": "Nový MCP server",
+ "mcp_server_add": "Přidat server",
+ "mcp_server_remove": "Odebrat",
+ "mcp_server_enabled": "Povoleno",
+ "mcp_server_discovery_mode": "Režim discovery",
+ "mcp_server_discovery_mode_inherit": "Sledovat globální režim discovery",
+ "mcp_server_discovery_mode_deferred": "Odložené discovery",
+ "mcp_server_discovery_mode_eager": "Okamžitá registrace",
+ "mcp_server_name_placeholder": "Název serveru (např. github)",
+ "mcp_server_url_placeholder": "URL serveru (např. https://example.com/mcp)",
+ "mcp_server_command_placeholder": "Příkaz (např. npx)",
+ "mcp_server_env_file_placeholder": "Cesta k souboru prostředí (volitelné)",
+ "mcp_server_args_placeholder": "Argumenty, jeden na řádek",
+ "mcp_server_env_placeholder": "JSON objekt prostředí",
+ "mcp_server_headers_placeholder": "JSON objekt hlaviček",
+ "sections": {
+ "agent": "Agent",
+ "runtime": "Runtime",
+ "evolution": "Evoluce",
+ "mcp": "MCP",
+ "exec": "Spouštění příkazů",
+ "cron": "Cron úlohy",
+ "launcher": "Launcher",
+ "devices": "Zařízení"
+ },
+ "open_raw": "Raw konfigurace",
+ "back_to_visual": "Vizuální konfigurace",
+ "raw_json_title": "Raw JSON konfigurace",
+ "json_placeholder": "Zadejte platnou JSON konfiguraci...",
+ "save_success": "Konfigurace úspěšně uložena.",
+ "save_error": "Uložení konfigurace selhalo.",
+ "reset_confirm_title": "Resetovat změny",
+ "reset_confirm_desc": "Opravdu chcete zahodit neuložené změny a vrátit se k poslednímu uloženému stavu?",
+ "reset_success": "Změny byly obnoveny na poslední uložený stav.",
+ "invalid_json": "Neplatný formát JSON.",
+ "format_success": "JSON úspěšně naformátován.",
+ "format_error": "Neplatný formát JSON.",
+ "format": "Formátovat",
+ "unsaved_changes": "Máte neuložené změny.",
+ "factory_reset": "Tovární nastavení",
+ "factory_reset_confirm_title": "Obnovit tovární nastavení",
+ "factory_reset_confirm_desc": "Tímto obnovíte veškerou konfiguraci na tovární nastavení. API klíče a bezpečnostní údaje budou zachovány. Záloha aktuální konfigurace bude vytvořena.",
+ "factory_reset_confirm": "Obnovit výchozí nastavení",
+ "factory_reset_success": "Konfigurace byla obnovena na tovární nastavení.",
+ "factory_reset_error": "Obnovení konfigurace selhalo."
+ },
+ "logs": {
+ "log_level_error": "Aktualizace úrovně logování selhala.",
+ "clear": "Vymazat logy",
+ "empty": "Čekám na logy..."
+ }
+ },
+ "tour": {
+ "skip": "Přeskočit průvodce",
+ "prev": "Předchozí",
+ "next": "Další",
+ "finish": "Dokončit",
+ "welcome": {
+ "title": "Vítejte v PicoClaw",
+ "description": "PicoClaw je výkonná platforma pro AI asistenty. Pojďme si dát chvíli na dokončení základního nastavení."
+ },
+ "models": {
+ "title": "Nakonfigurujte modely",
+ "description": "Klikněte na nabídku \"Modely\" vlevo pro nastavení API klíčů pro AI providery. V chatu lze použít pouze nakonfigurované modely."
+ },
+ "gateway": {
+ "title": "Spusťte gateway",
+ "description": "Po nakonfigurování modelů klikněte na tlačítko \"Spustit gateway\" nahoře pro zahájení chatu s AI."
+ },
+ "docs": {
+ "title": "Zobrazit dokumentaci",
+ "description": "Potřebujete další pomoc? Klikněte na tlačítko dokumentace v pravém horním rohu pro zobrazení podrobných průvodců a dokumentace ke konfiguraci."
+ }
+ }
+}